2016-04-13 16 views
0

Also, habe ich diese Klasse, die den Überblick über die Anzahl der Instanzen hält, die erstellt werden:Python: Änderung Basisklasse Attribut

class Base(object): 
    total = 0 
    def __init__(self): 
     <more code> 
     Base.total += 1 

Nun, ich möchte eine abgeleitete Klasse schaffen, aber ich will nicht, seine Instanzen, die zur Gesamtzahl in Base hinzugefügt werden. Also ziehe ich um das Hinzufügen rückgängig zu machen:

class Derived(Base): 
    def __init__(self): 
     super(Derived,self).__init__() 
     Base.total -= 1 

Es funktioniert, aber es scheint nicht eine gute Praxis, um mich in der abgeleiteten Klasse eine Basisklasse Attribut zuzugreifen. Gibt es eine bessere Methode?

+0

Sie müssen die '__init__' Methode der Basisklasse nicht nennen. Sie können Ihren ''-Block immer in eine separate Funktion verschieben. – Selcuk

Antwort

0

Sie können den Aufruf des Superklassenkonstruktors in der untergeordneten Klasse vermeiden. Es funktioniert gut, aber nicht auf der Suche sehr schön

noinspection PyMissingConstructor

Klasse abgeleitet (Basis):

def __init__(self): 
    <more code> 
Verwandte Themen