gpt4 book ai didi

python - 我们可以通过在 python 中的原始名称周围添加双下划线,将所有内置函数转换为类中的魔术(特殊)方法吗?

转载 作者:太空宇宙 更新时间:2023-11-03 19:09:32 25 4
gpt4 key购买 nike

我正在学习Python中的类,我发现了一些称为魔术方法或特殊方法的函数,我们在类定义中使用它们,问题如下:

例如,如果我们在任何原始内置函数之前和之后添加双下划线,是否允许我们在类中使用所有它们来执行相同的任务。

>>> int (3.6)
3

>>> str(3.7)
'3.7'

我们可以在类中使用str,如下所示:

class Character:
def __init__(self, name, initial_health):
self.name = name
self.health = initial_health
self.inventory = []

def __str__(self):
s = "Name: " + self.name
s += " Health: " + str(self.health)
s += " Inventory: " + str(self.inventory)
return s

def grab(self, item):
self.inventory.append(item)

def get_health(self):
return self.health

def example():
me = Character("Bob", 20)
print str(me)
me.grab("pencil")
me.grab("paper")
print str(me)
print "Health:", me.get_health()

example()

结果:

Name: Bob Health: 20 Inventory: []
Name: Bob Health: 20 Inventory: ['pencil', 'paper']
Health: 20

所有内置函数都可以是魔法(特殊)函数吗?

谢谢。

最佳答案

没有。有些内置函数有特殊的方法,有些则没有。此外,一些特殊方法不对应于内置函数,并且一些内置函数使用具有不同名称的特殊方法(例如,__instancecheck__)。可以看看the documentation中有哪些特殊的方法。 This也是一个很好的引用网站。

关于python - 我们可以通过在 python 中的原始名称周围添加双下划线,将所有内置函数转换为类中的魔术(特殊)方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13480845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com