Python 中类都有哪些魔术方法

Posted 守护@往昔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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/,谢谢!!******* 

以上是关于Python 中类都有哪些魔术方法的主要内容,如果未能解决你的问题,请参考以下文章

Python中类的特殊属性和魔术方法

Python 类的魔术方法

java中类修饰符都有哪些?

Eclipse里面怎么看父类都有哪些方法和属性?

Python中内置类型和定义了__nonzero__的魔术方法的类都能在if语句中呗解释为True或False

java中都有哪些类?