Qui ho un attributo 'a', che è definito nel metodo di prima classe e dovrebbe essere cambiato in secondo. Quando li chiama in ordine, viene visualizzato questo messaggio:AttributeError: L'oggetto 'Class' non ha attributo 'a'
AttributeError: 'Class' object has no attribute 'a'
L'unico modo che ho trovato - definire 'a' di nuovo nel secondo metodo, ma nel codice vero e proprio è stato a lungo eredità e app sarà incasinato. Perché non funziona? Non è self.a uguale a Class.a?
class Class(object):
def method_1(self):
self.a = 1
def method_2(self):
self.a += 1
Class().method_1()
Class().method_2()
Grande rispondi ... ma probabilmente vale la pena di spiegare che 'self.a' è non uguale a 'Class.a', invece di dire semplicemente" no "). 'self.a' è un attributo _instance_: ogni istanza di' Class' ha una propria copia. 'Class.a' è un attributo _class: la classe stessa ha una singola copia, non importa quante istanze ci siano (una specie di membro statico in C++ e lingue correlate). E se non sai perché vuoi un attributo di classe, non ne vuoi uno. – abarnert