📅  最后修改于: 2023-12-03 15:34:21.484000             🧑  作者: Mango
Python中的“魔术方法”是指一类特殊的方法,用于在对象生命周期中发生特定事件时被调用。这些方法也称为“特殊方法”、“双下方法”或“魔术属性”。Python中的每个类都具有一些内置的魔术方法。
下面列出了Python中常见的魔术方法及其说明:
__init__()
用于初始化对象。通常在创建实例时调用。
class MyClass:
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
__str__()
用于返回对象的字符串表示。
class MyClass:
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
def __str__(self):
return f"MyClass({self.arg1}, {self.arg2})"
__len__()
用于计算对象的长度。
class MyClass:
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
def __len__(self):
return len(self.arg1) + len(self.arg2)
__getitem__()
和__setitem__()
用于访问和修改对象的索引值。
class MyClass:
def __getitem__(self, key):
return self.data[key]
def __setitem__(self, key, value):
self.data[key] = value
__getattr__()
用于在访问不存在的属性时被调用。
class MyClass:
def __getattr__(self, attr):
if attr == 'my_attribute':
return 'my_value'
else:
raise AttributeError(f"'{self.__class__.__name__}' objects has no attribute '{attr}'")
__call__()
用于将对象作为函数进行调用。
class MyClass:
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
def __call__(self, arg3):
return self.arg1 + self.arg2 + arg3
my_obj = MyClass(1, 2)
my_obj(3) # Output: 6
魔术方法是Python中的强大特性,可用于编写更简洁、更易于维护和扩展的代码。虽然这里只介绍了常见的魔术方法,但在Python的标准库和第三方库中还有许多其他用途的魔术方法。熟悉这些魔术方法将有助于更好地理解Python代码并提高编程能力。