通过在python中的原始名称周围添加双下线,我们可以将所有内置函数转换为类中的魔术(特殊)方法吗?
我正在学习python中的类,我发现一些函数称为魔术方法或特殊方法,我们在类定义中使用它们,问题如下:通过在python中的原始名称周围添加双下线,我们可以将所有内置函数转换为类中的魔术(特殊)方法吗?,python,class,Python,Class,我正在学习python中的类,我发现一些函数称为魔术方法或特殊方法,我们在类定义中使用它们,问题如下: class Character: def __init__(self, name, initial_health): self.name = name self.health = initial_health self.inventory = [] def __str__(self): s = "Name: " + s
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()
例如,如果我们在任何原始内置函数之前和之后添加双下划线,是否允许我们在一个类中使用所有下划线来执行相同的任务
>>> 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
是否所有内置函数都可以是神奇(特殊)函数
谢谢 没有。有些内置函数有专门的方法,有些没有。此外,一些特殊方法与内置函数不对应,一些内置函数使用具有不同名称的特殊方法(例如,
\uuu instancecheck\uuu
)。您可以看到中有哪些特殊方法。也是一个很好的参考网站。不。有些内置函数有专门的方法,有些没有。此外,一些特殊方法与内置函数不对应,一些内置函数使用具有不同名称的特殊方法(例如,\uuu instancecheck\uuu
)。您可以看到中有哪些特殊方法。也是一个很好的参考网站