class Base(object):
def getAttributeKeys(self):
"""Definiert in einer Klasse, die Base erbt
Element(Methoden und Eigenschaften)Ich möchte nur den Schlüssel von bekommen
"""
class Child(Base):
def __init__(self):
self.hoge = "hoge"
def fuga(self):
pass
In diesem geeigneten Beispiel
ch = Child()
print(ch.getAttributeKeys()) # >>> ['hoge', 'fuga']
Wenn du so sein willst.
http://stackoverflow.com/questions/7136154/python-how-to-get-subclasss-new-attributes-name-in-base-classs-method Ich denke, es gibt verschiedene Möglichkeiten, aber ich frage mich, ob dieser Weg persönlich schön ist.
Set-Operationen sind in Python einfach zu verwenden. Verwenden Sie diese Option
Unterklassenelementliste minus übergeordnete Klassenelementliste
Sie können eine Liste solcher Kinderklassen erhalten.
class Base(object):
def getAttributeKeys(self):
return set(dir(self.__class__)) - set(dir(Base))
(* Das Ergebnis wird anstelle der Liste festgelegt.)
ch = Child()
keys = getAttributeKeys()
#Versuchen Sie, den Wert des Attributs zu erhalten
key = keys[0] #Angenommen, Sie wählen aus den Schlüsseln
attr = ch.getattr(self, key)
#Bestimmen Sie, ob es sich um eine Methode handelt, und führen Sie sie aus
import types
if isinstance(attr, types.MethodType):
#Da attr eine Methode ist, kann sie ausgeführt werden
attr()
Bitte verwenden Sie es, wenn Sie automatisch importieren möchten, was in der Unterklasse definiert ist.