python3的特殊成员和魔法方法

74 阅读1分钟
#!/usr/bin/python
# -*- coding:utf-8 -*-

#特殊成员和魔法方法
class People:
    """
    这是一个people类
    """
    
    def __init__(self,name,age) -> None:
        """
        构造函数
        """
        self.name = name
        self.age = age
    def __del__(self):
        """
        析构函数
        """
        print("这是一个析构函数")

    def __call__(self,*args,**kwargs):
        pass
    
    def __str__(self) -> str:
        return "我是 {}".format(self.name)

    def __len__(self):
        return "返回长度"

    def __iter__(self):
        return "这是iter方法"

    def __getitem__(self,key):
        """
        可以通过中括号访问,具备字典一样的功能
        """
        if key == "name":
            return self.name
        else:
            return None

    def __setitem__(self,key,value):
        if key == "name":
            self.name = value

    def __delitem__(self,key):
        if key == "name":
            del self.name

    def __add__(self,other):
        """
        两个对象可以相加的能力
        同理
        __sub__() -
        __mul__() *
        __div__() /
        __mod__() %
        __pow__() **
        """
        if isinstance(other,People):
            return [self,other]
        elif isinstance(other,list):
            return other.append(self)
    


if __name__ == '__main__':
    p = People('peter',22)
    print(p.__doc__)
    print(p.__module__)
    print(p.__class__)
    print(p.__dict__)