class Base(object):
def getAttributeKeys(self):
"""Défini dans une classe qui hérite de Base
élément(Méthodes et propriétés)Je veux obtenir seulement la clé de
"""
class Child(Base):
def __init__(self):
self.hoge = "hoge"
def fuga(self):
pass
Dans cet exemple approprié,
ch = Child()
print(ch.getAttributeKeys()) # >>> ['hoge', 'fuga']
Quand tu veux être comme.
http://stackoverflow.com/questions/7136154/python-how-to-get-subclasss-new-attributes-name-in-base-classs-method Je pense qu'il y a plusieurs façons de le faire, mais je me demande si cette façon est personnellement belle.
Les opérations de définition sont faciles à utiliser en Python, alors utilisez ceci
Liste d'éléments de sous-classe moins liste d'éléments de classe parent
Vous pouvez obtenir une liste de classes enfants comme celle-ci.
class Base(object):
def getAttributeKeys(self):
return set(dir(self.__class__)) - set(dir(Base))
(* Le résultat sera défini au lieu de la liste.)
ch = Child()
keys = getAttributeKeys()
#Essayez d'obtenir la valeur de l'attribut
key = keys[0] #Supposons que vous choisissiez parmi les clés
attr = ch.getattr(self, key)
#Déterminez s'il s'agit d'une méthode et exécutez
import types
if isinstance(attr, types.MethodType):
#Puisque attr est une méthode, elle peut être exécutée
attr()
Veuillez l'utiliser lorsque vous souhaitez importer automatiquement ce qui est défini dans la sous-classe.
Recommended Posts