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 に答える