如何使用通过函数返回的类?

2024-09-30 20:17:43 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个为基于文本的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(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)

我的问题是:如何操作我通过createwealth类的generate()方法创建的武器对象?例如,如果我有一个具有inventory属性的player类:

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()来创建一个随机的武器,如何将这个武器对象添加到玩家的库存中?谢谢你的帮助。你知道吗


Tags: nameselfobjectinitvaluedefgenerateclass
2条回答

生成函数返回一个武器。您只需要分配它(或直接存储它)。你知道吗

例如

generated_weapon = CreateWeapon.generate()
self.inventory['weapons'].append(generated_weapon)

或者直接储存

self.inventory['weapons'].append(CreateWeapon.generate())

generate()返回一个武器实例,您只需将其附加到库存中即可。你知道吗

weapon = createweapon.generate()
self.inventory['weapons'].append(weapon)

我必须说,我不认为CreateWealth应该是一个类。类是为武器本身而设的;generate应该是武器的类方法。你知道吗

相关问题 更多 >