Salve a tutti, stavo svolgendo questo esercizio:
Il mio codice è questo:
Funziona correttamente, se non fosse che varC e varl sembrano essere entrambe variabili di classe poichè sia eseguendo a.varC (e quindi usando l'istanza) sia eseguendo A.varC( quindi usando la classe) viene sempre stampato il risultato..quindi quando faccio setattr, io assegno una variabile di classe a quanto ho capito?
Allora mi chiedo in che modo possa settare una variabile di istanza dall'esterno senza che questa diventi di classe.
Inoltre non ho ben capito la parte in cui dice " inoltre quando vengono create le istanze di una classe derivata queste 'nascono' con lo stesso valore di varl settato da __init__ di classe Base".. Non ho ben capito il motivo della precisazione, per cui non capisco se l'esercizio l'ho svolto correttamente oppure no.. Grazie in anticipo
Il mio codice è questo:
Python:
def classeBase(classe):
setattr(classe, 'varC', 1000)
setattr(classe, 'varl', 10)
def f(self, v):
print(v * self.varl)
def g(x):
print(x * classe.varC)
setattr(classe, 'f', f)
setattr(classe, 'g', g)
return classe
@classeBase
class A:
pass
#test
a=A()
a.f(12)
print(a.varC, a.varl)
print(A.varC, A.varl)
A.g(13)
Funziona correttamente, se non fosse che varC e varl sembrano essere entrambe variabili di classe poichè sia eseguendo a.varC (e quindi usando l'istanza) sia eseguendo A.varC( quindi usando la classe) viene sempre stampato il risultato..quindi quando faccio setattr, io assegno una variabile di classe a quanto ho capito?
Allora mi chiedo in che modo possa settare una variabile di istanza dall'esterno senza che questa diventi di classe.
Inoltre non ho ben capito la parte in cui dice " inoltre quando vengono create le istanze di una classe derivata queste 'nascono' con lo stesso valore di varl settato da __init__ di classe Base".. Non ho ben capito il motivo della precisazione, per cui non capisco se l'esercizio l'ho svolto correttamente oppure no.. Grazie in anticipo