我一直在撞墙,这让我无法摆弄游戏。
class Damage:
def shortsword():
shortsword=randint(1,6)+1
shortsword=int(shortsword)
return shortsword
我一直希望这个号码作为打印信息的一部分弹出,然后使用相同的号码作为另一个功能的一部分来帮助减去目标上的健康状况。虽然每次我抓住它,它总是会改变。
答案 0 :(得分:2)
将返回值保存在变量中。
ret = self.shortsword()
print ret
new_func(ret)
此外,您不需要将shortsword
转换为int
,因为randomint
会返回一个整数并向其添加1
(整数)返回整数。
def shortsword():
return randint(2, 7)
正如jonrsharpe在评论中所提到的,random.randint(1, 6) + 1
给出了与random.randint(2, 7)
相同的结果。
答案 1 :(得分:0)
有一个类没有使用任何类/实例属性的方法,这似乎很奇怪。以下是一些更好地使用Python功能的其他选项:
1。使shortsword
成为一个独立的功能:
def shortsword():
return randint(2, 7)
damage = shortsword()
2。使Damage
成为更有用的类,shortsword
成为该类的实例:
class Damage:
def __init__(self, modifier=0, die_sides=6):
self.modifier = modifier
self.die_sides = die_sides
def damage(self):
return randint(1, self.die_sides) + self.modifier
shortsword = Damage(1)
damage = shortsword.damage()
3。你可以在字典中查找@classmethod
中的各种武器:
class Damage:
WEAPONS = {'shortsword': (2, 7)}
@classmethod
def damage(cls, weapon):
return randint(*cls.WEAPONS[weapon])
damage = Damage.damage('shortsword')
4。最后,如果您真的想将Damage
用作组织目的,shortsword
应该是@staticmethod
,因为它不是&{ #39; t使用任何类/实例属性:
class Damage:
@staticmethod
def shortsword():
return randint(2, 7)
damage = Damage.shortsword()