class person:
def __init__(self, name):
self.name = name
def __str__(self):
return '姓名:{}'.format(self.name)
def __del__(self):
print('物件即將銷毀')
# 當獲取不存在的屬性時,會自動觸發該方法
def __getattr__(self, item):
if item == 'age':
return 18
else:
return '你猜'
# 當設定不存在的屬性時,會自動觸發該方法
def __setattr__(self, key, value):
print(key, value)
self.__dict__[key] = value
# 銷毀物件成員屬性時,會自動觸發該方法
def __delattr__(self, item):
print(item, '即將銷毀')
xiaoming = person('小明')
xiaoming.age = 20
print(xiaoming.age)
# 存放物件的所有屬性
# print(xiaoming.__dict__)
# print(xiaoming)
del xiaoming.age
將物件當做字典操作,特定時機會自動觸發的方法
class person:
# 將物件當做字典操作,設定鍵值對時會觸發該方法
def __setitem__(self, key, value):
# print(key, value)
self.__dict__[key] = value
# 將物件當做字典操作,根據鍵獲取值時會觸發該方法
def __getitem__(self, item):
# print(item)
return self.__dict__.get(item)
# 將物件當做字典操作,刪除指定的鍵值對時自動觸發
def __delitem__(self, key):
del self.__dict__[key]
xiaoming = person()
xiaoming['name'] = '小明'
print(xiaoming.dict)
print(xiaoming['name'])
del xiaoming['name']
將物件當做函式呼叫時,會自動觸發下面方法
class person:
# 將物件當做函式呼叫時,會自動觸發該方法
def __call__(self, *args, **kwargs):
# print('__call__')
return sum(args)
xiaoming = person()
# 這樣操作,需要提供call方法
ret = xiaoming(1, 2, 3, name='小明')
print(ret)
內建算術運算子:
'''
加法:__add__、__radd__、__iadd__
減法:__sub__、__rsub__、__isub__
乘法:__mul__、__rmul__、__imul__
除法:__truediv__、__rtruediv__、__itruediv__
求餘:__mod、__rmod__、__imod__
'''
內建關係運算子
'''
>: __gt__
=: __ge__
<: __lt__
<=: __le__
==: __eq__
!=: __ne__
'''
總結: __init__、__del__、__str__、attr系列、item系列、__call__ , __str__與__repr__
這兩個方法都只能返回字串 :
使用print/str方法時會自動觸發__str__
方法,當__str__
不存在,嘗試__repr__
使用repr方法時會自動觸發__repr__
方法 , repr方法通常用於返回物件的字串表示形式
eval方法可以將乙個字串當做有效的**執行
python 常用的內建函式
filter function,sequence 對sequence 中的item 依次執行 function item 將執行結果為 true 的item 組成乙個 list string tuple 取決於 sequence 的型別 deff x returnx 2 0 printfilter ...
Python 常用的內建函式
build in function,啟動python直譯器,輸入dir builtins 可以看到很多python直譯器啟動後預設載入的屬性和函式,這些函式稱之為內建函式,這些函式因為在程式設計時使用較多,cpython直譯器用c語言實現了這些函式,啟動直譯器 時預設載入。rangerange st...
python 常用的內建函式
callable obj 檢視乙個obj是不是可以像函式一樣呼叫 repr obj 得到obj的表示字串,可以利用這個字串eval重建該物件的乙個拷貝 eval r str 表示合法的python表示式,返回這個表示式 dir obj 檢視obj的name space中可見的name hasattr...