本文和大家分享的主要是python
中
特殊成員方法相關(guān)內(nèi)容,一起來(lái)看看吧,希望對(duì)大家
學(xué)習(xí)python有所幫助。
__doc__
查看尖的描述信息
__module__
表示當(dāng)前操作的對(duì)象所在的模塊
__class__
表示當(dāng)前操作的對(duì)象所屬的類
__init__
構(gòu)造方法 通過(guò)類創(chuàng)建對(duì)象自動(dòng)執(zhí)行
__del__
析構(gòu)方法
,
當(dāng)前對(duì)象在內(nèi)存中被釋放自動(dòng)斬妖執(zhí)行
__call__
對(duì)象后面加括號(hào)觸發(fā)執(zhí)行
__dict__
查看類或?qū)ο笾械某蓡T
__str__
如果一個(gè)類中定義了此方法
,
那么打印此類對(duì)象時(shí)
,
輸出此方法的返回值
__getitem__
當(dāng)類中定義了一個(gè)字典的屬性成員
,
可以獲取
__setitem__
設(shè)置修改類中字典的數(shù)據(jù)
__delitem__
刪除 類中字典的數(shù)據(jù)
__metalass__
其用來(lái)表示該類由 誰(shuí) 來(lái)實(shí)例化創(chuàng)建
__new__
觸發(fā)
__init__
創(chuàng)建實(shí)例
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=name
11 self.food=food
12 self.data={}#
定義一個(gè)類的字典
13 def __call__(self, *args, **kwargs):#
對(duì)象后面加括號(hào)解執(zhí)行
14 print(*args)
15 def __str__(self):#
默認(rèn)輸出返回值
16 return self.name
17 def __getitem__(self):#
可以獲取類的的字典
18 return self.data
19 def __setitem__(self, key, value):#
可以設(shè)置類的的字典
20 self.data[key]=value
21 def __delitem__(self, key):#
可以刪除類的字典的內(nèi)容
22 del self.data[key]
23 dog=doges('xxx','iii')
24 print(dog.__doc__)
25 b=a()
26 print(b.__module__)#
操作的對(duì)象的那個(gè)模塊
27 print(dog.__class__)#
當(dāng)前操作的對(duì)象的類是什么
28 dog('111')#
29 print(doges.__dict__)#
查看類或?qū)ο蟮某蓡T
類只打印類的成員不打印對(duì)象的成員
30 print(dog.__dict__)#
查看類或?qū)ο蟮某蓡T 對(duì)象只打印對(duì)象的成員不打印類的成員
31 print(dog)#
打印
__str__
的返回值
32 print(dog.__str__())#
打印返回值
33
34 dog['1']=1000#
觸發(fā)
.__setitem__()
35 dog['2']=1000#
觸發(fā)
.__setitem__()
36 print(dog.__getitem__())
37 print(dog.__delitem__('1'))#
刪除類中字典
38 print(dog.__getitem__())
39
40 #
設(shè)置類的特殊方法
41 def func(self):
42 print('hello word%s'%self.name)
43 print()
44
45 def __init__(self,name,age):
46 self.name=name
47 self.age=age
48 ##type
參數(shù)
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)
View Code
反射:
通過(guò)字符串 調(diào)用對(duì)象中的方法
1 #
!
usr/bin/env python
2 #-*-coding:utf-8-*-
3 # Author calmyan
4 #
反射
5
6 #
定義 一個(gè)新方法
7 def bulk(self):
8 print("%s is talking...."%self.name)
9
10 class DOG(object):
11 def __init__(self,name):
12 self.name=name
13 def eat(self,food):
14 print('%s is eating %s'%(self.name,food))
15
16 d=DOG('
一只狗
')
17
18 stres=input('
方法
:').strip()#
手動(dòng)輸入方法
19
20 if hasattr(d,stres):#
通過(guò)字符串反射對(duì)象中的方法
,
是否存在
21 func=getattr(d,stres)#
調(diào)用此方法
22 func("
骨頭
")#
執(zhí)行方法
23 else:
24 setattr(d,stres,bulk)#
對(duì)象增加一個(gè)方法 返回一個(gè)內(nèi)存地址
25 getattr(d,stres)(d)#
調(diào)用此方法 增加的
26 #d.talk(d)
27 #
屬性修改
28 stres1=input('
屬性
:').strip()#
手動(dòng)輸入屬性
29 if hasattr(d,stres1):#
如果已經(jīng)存在
30 attr=getattr(d,stres1)#
調(diào)用
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)#
對(duì)象增加一個(gè)屬性
,
賦值 返回這個(gè)屬性的值
37 print(stres1)
38 print(getattr(d,stres1))
39
40 print(d.__dict__)
41 dela=input('
刪除屬性
:').strip()
42
43 if hasattr(d,dela):#
如果已經(jīng)存在
44 delattr(d,dela)#
進(jìn)行刪除
45 print('
刪除成功
')
46
47 print(d.__dict__)
View Code
來(lái)源:
博客園