你好我的旅程,了解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
答案 0 :(得分:0)
更新modf
后,您不会更新min_dmg
和max_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应该对什么有用?