1

我正在学习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

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

谢谢。

4

1 回答 1

1

不,有些内置函数有专门的方法,有些则没有。此外,一些特殊方法不对应于内置函数,并且一些内置函数使用具有不同名称的特殊方法(例如,__instancecheck__)。您可以在文档中查看有哪些特殊方法。 也是一个很好的参考网站。

于 2012-11-20T19:47:08.407 回答