更改类变量python3的值

时间:2017-05-16 17:46:13

标签: python class methods

你好我的旅程,了解python中的课程,所以在尝试制作基本的文本RPG游戏时让它更有趣。现在我试图制作以类的实例为参数的函数,并改变它的特定属性,例如:

class short_sword:
def __init__(self):
    self.modf = 1
    self.name = "Short Sword"
    self.min_dmg = 1 * self.modf
    self.max_dmg = 3 * self.modf
    self.group = 0

现在我试图通过在该类的实例上使用函数来改变self.modf值:

def jewel(short_sword):
    short_sword.modf = short_sword.modf + 1

之后我创建对象并在使用该函数之前和之后打印值min_dmg和max_dmg以检查它是否有效:

item = short_sword(1)
print(str(item.min_dmg))
print(str(item.max_dmg))
jewel(item)
print(str(item.min_dmg))
print(str(item.max_dmg))

但是对于min_dmg它保持相同1而对于max_dmg它保持不变3什么都没有改变,我如何通过函数访问该变量来改变它? 英语不是我的母语,所以我希望有人能理解我,对不起,感谢您的帮助:P

1 个答案:

答案 0 :(得分:0)

更新modf后,您不会更新min_dmgmax_dmg。您可以使用访问者:

class short_sword:
    def __init__(self):
        self.modf = 1
        self.name = "Short Sword"
        self.min_dmg = 1 * self.modf
        self.max_dmg = 3 * self.modf
        self.group = 0

    def change_modf(self, newValue):
        self.modf = newValue
        self.processDmg()

    def processDmg(self):
        self.min_dmg = 1 * self.modf
        self.max_dmg = 3 * self.modf

然后

def jewel(short_sword):
    short_sword.change_modf(short_sword.modf + 1)

因为否则您的属性仍然具有初始值。

旁注:你使用

item = short_sword(1)

但是你的short_sword类在它的构造函数中没有任何参数...... 1应该对什么有用?