Python作為一種面向對象的編程語言,類是其一大特色。在Python中,每個class都有一些特殊的方法,它們被稱為類魔法方法(Magic Method),也稱為特殊方法(Special Method)。
class MyClass: def __init__(self, name): self.name = name def __str__(self): return f"My name is {self.name}."
上述代碼中,__init__和__str__就是兩個常用的類魔法方法。下面簡要介紹幾個常用的類魔法方法。
__new__和__init__
class MyClass: def __new__(cls, *args, **kwargs): print("__new__ is called") instance = super().__new__(cls) return instance def __init__(self): print("__init__ is called") obj = MyClass() # __new__ is called # __init__ is called
__new__方法在實例化對象時最先被調用,作用是創建并返回一個新的實例對象,同時__init__方法將得到實例對象。如果__new__方法返回的是一個已有實例,那么__init__方法就不會被調用。
__str__和__repr__
class MyClass: def __init__(self, name): self.name = name def __str__(self): return f"My name is {self.name}." def __repr__(self): return f"MyClass(name={self.name})" obj = MyClass("Alice") print(obj) # My name is Alice. print(repr(obj)) # MyClass(name=Alice)
__str__方法用于在調用print()函數時以字符串形式輸出對象,而__repr__方法則返回一個字符串表示對象,主要是方便開發人員調試使用。
__getitem__和__setitem__
class MyList: def __init__(self, *args): self.items = list(args) def __getitem__(self, index): return self.items[index] def __setitem__(self, index, value): self.items[index] = value mylist = MyList(1, 2, 3, 4) print(mylist[2]) # 3 mylist[2] = 5 print(mylist[2]) # 5
__getitem__方法用于獲取對象中的元素,使對象能夠像序列那樣被索引和迭代。__setitem__方法則用于修改對象中的元素。
總結
以上是Python中常用的幾個類魔法方法,還有其他方法如__call__、__len__、__iter__等,可以根據需求靈活運用。
上一篇vue列表組件大全
下一篇python 求r方