Python 如何使用通过函数返回的类?
如果我有一个类为基于文本的RPG生成项目,就像这样——请记住这是我使用的代码的简化版本:Python 如何使用通过函数返回的类?,python,python-2.7,Python,Python 2.7,如果我有一个类为基于文本的RPG生成项目,就像这样——请记住这是我使用的代码的简化版本: from random import choice, randint class Weapon(object): def __init__(self, name, value, damage): self.name = name self.value = value self.damage = damage class CreateWeapon(
from random import choice, randint
class Weapon(object):
def __init__(self, name, value, damage):
self.name = name
self.value = value
self.damage = damage
class CreateWeapon(object):
def __init__(self):
self.prefix = ['rusty', 'polished', 'blessed']
self.weaponType = ['long sword', 'halberd', 'axe']
def generate(self):
weaponName = choice(self.prefix) + ' ' + choice(self.weaponType)
print weaponName
if weaponName[0] == 'r':
weaponDamage = randint(5, 20)
else:
weaponDamage = randint(20, 40)
weaponValue = randint(1, weaponDamage * 3)
return Weapon(weaponName, weaponValue, weaponDamage)
我的问题是:如何通过CreateWearm类的generate()
方法操作我创建的武器对象?例如,如果我有一个具有库存属性的玩家类:
class Player(object):
def __init__(self):
self.inventory = {'weapons': []}
def addWeaponDrop(self):
createweapon = CreateWeapon()
createweapon.generate()
print 'What do?'
"""self.inventory['weapons'].append()"""
player = Player()
。。。我调用player方法addWeaponDrop()
来创建一个随机武器,如何将该武器对象添加到玩家的库存中?感谢您的帮助。generate()
返回一个武器实例,您只需将其附加到库存中即可
weapon = createweapon.generate()
self.inventory['weapons'].append(weapon)
但我必须说,我不认为CreateLandware应该是一个类。课程是为了东西——即武器本身generate
应该是武器上的一个classmethod。generate()
返回一个武器实例,您只需将其附加到库存中即可
weapon = createweapon.generate()
self.inventory['weapons'].append(weapon)
但我必须说,我不认为CreateLandware应该是一个类。课程是为了东西——即武器本身<代码>生成应该是武器上的一个类方法。生成函数返回武器。您只需要分配它(或直接存储它) e、 g 或者直接储存
self.inventory['weapons'].append(CreateWeapon.generate())
生成函数返回一个武器。您只需要分配它(或直接存储它) e、 g 或者直接储存
self.inventory['weapons'].append(CreateWeapon.generate())
一般来说,给一个类一个动词作为名称意味着你做了错误的设计选择。正如下面所建议的,如果您不需要复杂的
武器工厂
,您可以将逻辑作为替代构造函数移动到类方法中。通常,给类一个动词作为名称表示您做出了错误的设计选择。正如下面所建议的,如果您不需要复杂的武器工厂
,您可以将逻辑作为替代构造函数移动到类方法中。