Python 中类都有哪些魔术方法

魔术方法

__init__:方法作用是给对象的属性进行赋值

__str__:print(keyou) 直接打印对象的时候会调用 __str__ 方法,一定只能返回字符串

__call__:(译:靠)对象.()自动调用,位置参数被args接收为元祖,关键字参数被kwargs接收

_getitem__:对象.[]会默认调用__getitem__方法,可以通过数字索引取值、切片操作

class PersonInfo:
    def __init__(self, name, age):
        # __init__ 方式作用是给对象的属性进行赋值
        self.name = name
        self.age = age
        self.skills = []

    def add_skill(self, item):
        self.skills.append(item)

    def __str__(self):
        # print(keyou) 直接打印对象的时候会调用 __str__ 方法,一定只能返回字符串
        return f"[{self.name},{self.age}]"

    def __call__(self, *args, **kwargs):
        # (译:靠)对象.()自动调用,位置参数被args接收为元祖,关键字参数被kwargs接收
        pass

    def __getitem__(self, item):
        # 对象.[]会默认调用__getitem__方法,可以通过数字索引取值、切片操作
        return self.skills[item]


# init
keyou = PersonInfo("小明", 17)
# str
print(keyou)
# 对象.()
keyou("非常帅", True, sex="男", score=50)

# getitem,添加技能,在切片
keyou.add_skill("会Python")
keyou.add_skill("会吹牛")
keyou.add_skill("会撞壁")
print(keyou.skills)     # 结果:[‘会Python‘, ‘会吹牛‘, ‘会撞壁‘]
print(keyou[0:2:1])         # 结果:[‘会Python‘, ‘会吹牛‘]

*******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/,谢谢!!******* 

相关推荐