2016-08-13 8 views
0

In Python kann ich Klassenfelder mit __dict__ erhalten. Hier habe ich zwei Fragen:Abrufen von Feldern der abgeleiteten Klasse

Gibt es eine bessere Möglichkeit, Felder zu bekommen? Weil es nur Felder mit Werten bringt. Wie kann ich Felder erhalten, die nur in der Klasse selbst existieren, nicht in der Basisklasse? diese

+1

Ich denke, du meinst Attribute. Hast du versucht * class-name.attribute-name *? – cdarke

+0

Ja, Attribute. Ich bin ein Python Noob, nicht wirklich in Begriffe. Mein Ziel ist es, einen Code Generator wie etwas zu machen. Ich habe Klassen, die von einer anderen Klasse erben. Ich brauche ihre Attribute und Werte, nicht die Basisklassen-Attribute. – Doruk

Antwort

1

Check:

from types import FunctionType 

class A (object): 
    def test(self): 
     pass 

class B(A): 
    def test12(self): 
     pass 


print([x for x,y in A.__dict__.items() if type(y) == FunctionType]) 

print([x for x,y in B.__dict__.items() if type(y) == FunctionType]) 

Für Attribute, die diese Methoden nicht sind, versuchen Sie dies:

attributes = [x for x,y in B.__dict__.items() if (type(y) != FunctionType and type != callable)] 

[a for a in attributes if not(a.startswith('__') and a.endswith('__'))] 
+0

Dieser Code listet die Funktionen auf. Ich brauche Attribute. Danke trotzdem. – Doruk

+1

Es ist so ziemlich dasselbe. –

+0

Nidhin, was hast du in deinem Beispiel benutzt? Ich sah das in einem Trainingsvideo oder so ähnlich und wollte experimentieren. – LhasaDad

Verwandte Themen