📜  python“魔术方法” - Python(1)

📅  最后修改于: 2023-12-03 15:34:21.484000             🧑  作者: Mango

Python '魔术方法'

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代码并提高编程能力。