我正試圖更好地理解__str__
函數的正確用法。 比方說,我有在遊戲中使用一個非常簡單的類稱爲字符,看起來像這樣:更好地理解__str__用法
class Character(object):
""" A game character. """
def __init__(self, name):
self.name = name
self.poisoned = False
self.strength = random.randrange(10, 20)
self.max_strength = self.strength
self.dexterity = random.randrange(10, 20)
self.max_dexterity = self.dexterity
self.hit_points = 100
self.spell_points = 100
self.weapon = []
self.spell = []
self.items = []
self.aura = []
self.xp = 0
此前瞭解的__str__
功能,我會定義叫print_stats(self)
之類的方法,該方法將打印字符統計通過Character.print_stats()
。在瞭解了__str__
之後,雖然它看起來像是一個用於定義和顯示對象統計信息的函數,類似於我要用print_stats(self)
...所做的操作,但是在玩它時學習,返回的值必須是字符串,而不是包含整數,看起來我的假設是錯誤的。
所以現在我的問題是__str__
的良好用法的一些例子是什麼?我提供的例子是否可以使用該功能?
這非常有幫助,同時教我新的東西。我對'format(** self .__ dict __)'不熟悉',但是在我的應用程序中測試過它,它像一個魅力一樣工作。我以前沒有遇到像這樣的字符串格式化(不使用'%s'或'%d')。現在我要了解更多關於這段代碼的信息。 –
請注意,如果類定義了'__slots__',則這不起作用。這絕對是一個角落案例,但是如果你處理了__slots__'啓用(受限制的)類,那麼這些信息是值得了解的。這個答案的另一個很酷的特性是python自動連接字符串:)。 – mgilson
如果該類確實使用了__slots__,那麼相應的片段就是'...).format(name = self.name,poisoned = self.poisoned)'。 –