我正试图更好地理解__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)'。 –