Heim > Artikel > Backend-Entwicklung > Python über Reflexion und spezielle Member-Methoden von Klassen
Dieser Artikel wird Ihnen die speziellen Methoden von Python zu Reflexion und Klassen vorstellen. Er ist sehr gut und hat Referenzwert.
Reflexion
Reflection bedeutet, dass es 4 integrierte Funktionen gibt: getattr, hasattr, setattr, delattr zum Abrufen von Mitgliedern, Überprüfen von Mitgliedern, Festlegen von Mitgliedern, Löschen von Mitgliedern
class Dog(object): def __init__(self,name): self.name = name def eat(self): print("%s is eating..."%self.name) def run(): print("runing ....") d = Dog("lucy") choise=input("请输入要调用的方法:") if hasattr(d,choise):#判断一个对象是否有对应的字符串方法 func=getattr(d,choise)#根据字符串去获取对象里相应的方法或属性的内存地址对象 func() else: setattr(d,choise,run)#setattr(obj,y,fun)相当于obj.y=fun,fun可以是属性或者方法 v=getattr(d,choise) print(v)
dir([obj]):
Der Aufruf dieser Methode gibt eine Liste mit den meisten Attributnamen von obj zurück (es gibt einige spezielle Attribute). nicht im Lieferumfang enthalten). Der Standardwert von obj ist das aktuelle Modulobjekt.
hasattr(obj, attr):
Mit dieser Methode wird überprüft, ob obj ein Attribut mit einem Wert namens attr hat und einen booleschen Wert zurückgibt.
getattr(obj, attr):
Der Aufruf dieser Methode gibt den Wert des Attributs namens attr value in obj zurück, zum Beispiel wenn attr „ bar ', dann obj.bar zurückgeben.
setattr(obj, attr, val):
Der Aufruf dieser Methode weist dem Attribut namens attr von obj einen Wert zu. Wenn attr beispielsweise „bar“ ist, entspricht dies obj.bar = val.
__doc__ Zeigen Sie die detaillierten Beschreibungsinformationen an
__module__ stellt das Modul dar, in dem sich das aktuell betriebene Objekt befindet
__class__ stellt die Klasse dar, zu der das aktuell betriebene Objekt gehört
__init__ Der Konstruktor erstellt automatisch Objekte über Klassen Führen Sie die Destruktormethode
__del__ aus, das aktuelle Objekt wird im Speicher freigegeben, der Dämon wird automatisch getötet und ausgeführt.
Fügen Sie nach dem Objekt __call__ Klammern hinzu, um die Ausführung auszulösen
__dict__ Zeigen Sie die Mitglieder in der Klasse oder im Objekt an
__str__ wenn diese Methode in einer Klasse definiert ist, wird beim Drucken eines solchen Objekts der Rückgabewert dieser Methode ausgegeben
__getitem__ Wenn das Attributmitglied eines Wörterbuchs in der Klasse definiert ist, können Sie das
__setitem__-Einstellung zum Ändern des Wörterbuchs in der Klasse.
__delitem__ löscht die Daten des Wörterbuchs in der Klasse.
__metalass__ wird verwendet, um anzugeben, wer die Klasse instanziiert und erstellt.
__new__ löst __init__ aus, um ein zu erstellen Instanz
from lib.ss import a #示例类 dog class doges(object): """类的描述信息""" def __init__(self,name,food): self.name=name self.food=food self.data={}#定义一个类的字典 def __call__(self, *args, **kwargs):#对象后面加括号解执行 print(*args) def __str__(self):#默认输出返回值 return self.name def __getitem__(self):#可以获取类的的字典 return self.data def __setitem__(self, key, value):#可以设置类的的字典 self.data[key]=value def __delitem__(self, key):#可以删除类的字典的内容 del self.data[key] dog=doges('xxx','iii') print(dog.__doc__) b=a() print(b.__module__)#操作的对象的那个模块 print(dog.__class__)#当前操作的对象的类是什么 dog('111')# print(doges.__dict__)#查看类或对象的成员 类只打印类的成员不打印对象的成员 print(dog.__dict__)#查看类或对象的成员 对象只打印对象的成员不打印类的成员 print(dog)#打印 __str__的返回值 print(dog.__str__())#打印返回值 dog['1']=1000#触发.__setitem__() dog['2']=1000#触发.__setitem__() print(dog.__getitem__()) print(dog.__delitem__('1'))#删除类中字典 print(dog.__getitem__()) #设置类的特殊方法 def func(self): print('hello word%s'%self.name) print() def __init__(self,name,age): self.name=name self.age=age ##type参数 1:类名 2.类的基类 3.类的成员,字典格式 CAT=type('CAT',(object,),{'func':func,'__init__':__init__}) cat=CAT('喵喵',3) cat.func() print(cat.name,cat.age)
Das obige ist der detaillierte Inhalt vonPython über Reflexion und spezielle Member-Methoden von Klassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!