Python 魔方方法

2021-08-22 07:11:01 字數 2793 閱讀 3095

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 我正在努...