python進階-魔法方法

學習中的小菜鳥.發表於2020-10-24

doc

  • 表示類的描述資訊
class Foo:
    """描述資訊........"""
    def func(self):
        pass


print(Foo.__doc__)

modul__和__class

  • __module__表示當前操作的物件在那個模組
  • __class__表示當前操作的物件的類是什麼

test.py

class Person(object):
	def __init__(self):
		self.name = 'laowang'

main.py

from test import Person

obj = Person()
print(obj.__module__)  # 輸出test, 即: 輸出模組
print(obj.__class__)  # 輸出test.Person 即:輸出類

init

  • 初始化方法, 通過類建立物件時, 自動觸發執行
class Person():
	def __init__(self, name):
		self.name = name

obj = Person('laowang')  # 自動執行類中的__init__方法

del

  • 當物件在記憶體中被釋放時, 自動觸發執行

call

  • 物件後面加括號,觸發執行

__init__方法的執行是由建立物件觸發的, 即: 物件 = 類名() ; 而對於__call__方法的執行是由物件後加括號觸發的

class Foo:
    def __init__(self):
        pass

    def __call__(self, *args, **kwargs):
        print('__call__')

foo = Foo()
foo()

dict

  • 檢查類中的所有屬性
class Province(object):
    coutry = 'China'

    def __init__(self, name, count):
        self.name = name
        self.count = count

    def func(self, *args, **kwargs):
        print('func')


# 獲取類的屬性, 即: 類屬性,方法
print(Province.__dict__)

obj1 = Province('山東', 10000)
print(obj1.__dict__)

str

  • 如果一個類中定義了__str__方法, 那麼在列印物件時, 預設輸出該方法的返回值
class Foo():

    def __str__(self):
        return 'laowang'


obj = Foo()
print(obj)  # laowang

相關文章