class person:
# 預設列印物件,顯示類名+位址
# 重寫該方法,列印該方法的返回值
def __str__(self):
return '我叫{},今年{}歲'.format(self.name, self.age)
james = person()
james.name = '勒布朗.詹姆斯'
james.age = 33
print(james) # 我叫勒布朗.詹姆斯,今年33歲
class cat:
def __str__(self):
return 'name:{},age:{},color:{}'.format(self.name, self.age, self.color)
# 構造方法:建立物件後,會自動呼叫該方法完成初始化設定
def __init__(self, name, age, color):
self.name = name
self.age = age
self.color = color
jiafei = cat('加菲', 2, '橘黃色')
print(jiafei)
class pig:
# 析構方法:當物件釋放時,系統會自動呼叫
# 若手動使用del刪除,則會立即呼叫該方法
# 該方法一般做資源釋放操作,如:資料庫斷開連線,檔案關閉
def __del__(self):
print('當物件釋放時, 系統會自動呼叫')
bajie = pig()
del bajie
print('八戒,一路走好')
class person:
def __str__(self):
return '姓名:{}'.format(self.name)
def __init__(self, name):
self.name = 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('小明')
# print(xiaoming.age)
# print(xiaoming.weight)
#xiaoming.age = 20
# 存放了所有的物件屬性
# print(xiaoming.__dict__)
# print(xiaoming.age)
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):
print(key, '即將銷毀')
del self.__dict__[key]
xiaoming = person()
xiaoming['name'] = '小明'
# print(xiaoming.name)
print(xiaoming['name'])
del xiaoming['name']
class person:
# 將物件當做函式呼叫時,會自動觸發該方法
def __call__(self, *args, **kwargs):
# print('__call__', args)
return sum(args)
xiaoming = person()
# 如果想這樣呼叫,必須重寫__call__方法
ret = xiaoming(1, 2, 3)
print(ret)
def test():
pass
# 判斷乙個物件能否被呼叫
print(callable(xiaoming))
print(callable(test))
# 判斷乙個物件是否擁有__call__屬性
print(hasattr(test, '__call__'))
print(hasattr(xiaoming, '__call__'))
# 判斷乙個物件是否能夠呼叫
from inspect import isfunction
print(isfunction(test))
print(isfunction(xiaoming))
Python常見的魔方方法
1 doc 作用 檢視文件字串 docstrings 用於解釋文件程式,幫助你的程式文件更加簡單易懂 使用 使用doc 注意雙下劃線 def func 實現兩數相加 pass print func.doc 輸出實現兩數相加2 class 作用 檢視當前操作物件的類是什麼 使用 使用class 注意雙...
Python 學習7 魔方方法
魔方方法總是被雙下劃線包圍 如 init 魔方方法是物件導向的python的一切 魔法方法的第乙個引數應為cls 類方法 或者self 例項方法 cls 代表乙個類的名稱 self 代表乙個例項物件的名稱 1 基本的魔方方法 init self init self 構造器,當乙個例項被建立的時候呼叫...
類與魔方方法
一 類與物件 封裝 資訊隱蔽技術 我們可以使用關鍵字class定義python類,關鍵字後面緊跟類的名稱 分號和類的實現。class turtle color green weight 10 legs 4 shell true mouth 大嘴 方法def climb self print 我正在努...