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

时间:2016-07-17 20:26:47

标签: 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(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)

我的问题是:如何通过CreateWeapon类的generate()方法操作我创建的Weapon对象?例如,如果我有一个具有库存属性的玩家类:

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()

...我调用播放器方法addWeaponDrop()来创建一个随机武器,如何将该武器对象添加到玩家的库存中?谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

generate()会返回一个Weapon实例,您可以将其附加到您的广告资源中。

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

我必须说,但我不认为CreateWeapon应该是一个类。课程是为了事物 - 即武器本身; generate应该是武器上的一种类方法。

答案 1 :(得分:0)

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

e.g。

var copyOfFilter = Clone((ReportFilter)filter);

或直接存储

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