Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in spezielle Membermethoden in Python-Klassen

Einführung in spezielle Membermethoden in Python-Klassen

零下一度
零下一度Original
2017-06-28 15:53:181669Durchsuche

__doc__ Detaillierte Beschreibungsinformationen anzeigen

__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__-Struktur Die Methode führt automatisch die Destruktormethode

__del__ über das Klassenerstellungsobjekt aus. Das aktuelle Objekt wird im Speicher freigegeben und führt automatisch die Dämonentötung aus.

Fügen Sie nach dem __call__-Objekt Klammern hinzu Ausführung auslösen

__dict__ Mitglieder in einer Klasse oder einem Objekt anzeigen

__str__ Wenn diese Methode in einer Klasse definiert ist, wird beim Drucken eines solchen Objekts der Rückgabewert dieser Methode ausgegeben

__getitem__ Wenn die Klasse die Attributmitglieder eines Wörterbuchs definiert, die abgerufen werden können,

__setitem__, um die Daten des Wörterbuchs in der Klasse festzulegen und zu ändern,

__delitem__, um die Daten von zu löschen das Wörterbuch in der Klasse

__metalass__, das verwendet wird. Gibt an, wer diese Klasse instanziiert und erstellt

__new__ löst __init__ aus, um eine Instanz zu erstellen

 1 #!usr/bin/env python 2 
 #-*-coding:utf-8-*- 3 # Author calmyan 4  5 from lib.ss import a 6 #示例类 dog 7 class doges(object): 8     
 """类的描述信息""" 9     def __init__(self,name,food):10         self.name=name11         self.food=food12         
 self.data={}#定义一个类的字典13     def __call__(self, *args, **kwargs):#对象后面加括号解执行14        
  print(*args)15     def __str__(self):#默认输出返回值16         return self.name17     
  def __getitem__(self):#可以获取类的的字典18         return self.data19     
  def __setitem__(self, key, value):#可以设置类的的字典20         self.data[key]=value21     
  def __delitem__(self, key):#可以删除类的字典的内容22        
   del self.data[key]23 dog=doges('xxx','iii')24 print(dog.__doc__)25 b=a()26 print(b.__module__)#操作的对象的那个模块27 print(dog.__class__)
   #当前操作的对象的类是什么28 dog('111')#29 print(doges.__dict__)#查看类或对象的成员  类只打印类的成员不打印对象的成员30 print(dog.__dict__)
   #查看类或对象的成员 对象只打印对象的成员不打印类的成员31 
   print(dog)#打印 __str__的返回值32 print(dog.__str__())#打印返回值33 34 dog['1']=1000#触发.__setitem__()35 dog['2']=1000
   #触发.__setitem__()36 print(dog.__getitem__())37 print(dog.__delitem__('1'))#删除类中字典38 print(dog.__getitem__())39 40 
   #设置类的特殊方法41 def func(self):42     print('hello word%s'%self.name)43     
   print()44 45 def __init__(self,name,age):46     self.name=name47     
   self.age=age48 
   ##type参数 1:类名 2.类的基类 3.类的成员,字典格式49 CAT=type('CAT',(object,),{'func':func,'__init__':__init__})50 51 
   cat=CAT('喵喵',3)52 cat.func()53 print(cat.name,cat.age)
Code anzeigen

Reflexion: Methoden in Objekten über Strings aufrufen

 1 #!usr/bin/env python 2 #-*-coding:utf-8-*- 3 # Author calmyan 4 #反射 5  6 
 #定义 一个新方法 7 def bulk(self): 8     print("%s is talking...."%self.name) 9 10 
 class DOG(object):11     def __init__(self,name):12         self.name=name13     
 def eat(self,food):14         print('%s is eating %s'%(self.name,food))15 16 d=DOG('一只狗')17 18 
 stres=input('方法:').strip()#手动输入方法19 20 if hasattr(d,stres):#通过字符串反射对象中的方法,是否存在21     
 func=getattr(d,stres)#调用此方法22     func("骨头")#执行方法23 else:24     
 setattr(d,stres,bulk)#对象增加一个方法 返回一个内存地址25     getattr(d,stres)(d)#调用此方法 增加的26     
 #d.talk(d)27 #属性修改28 stres1=input('属性:').strip()#手动输入属性29 if hasattr(d,stres1):#如果已经存在30     
 attr=getattr(d,stres1)#调用31     a=input('重新赋值:').strip()32     setattr(d,stres1,a)33     
 print(getattr(d,stres1))34 else:35     a=input('新赋值:').strip()36    
 setattr(d,stres1,a)#对象增加一个属性 ,赋值 返回这个属性的值37     print(stres1)38     
 print(getattr(d,stres1))39 40 print(d.__dict__)41 dela=input('删除属性:').strip()42 43 
 if hasattr(d,dela):#如果已经存在44     delattr(d,dela)#进行删除45     print('删除成功')46 47 
 print(d.__dict__)
Code anzeigen

Das obige ist der detaillierte Inhalt vonEinführung in spezielle Membermethoden in Python-Klassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn