通过在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

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

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
)。您可以看到中有哪些特殊方法。也是一个很好的参考网站