Python 装饰师';s类不能更改类变量
我有班上的英雄Python 装饰师';s类不能更改类变量,python,python-decorators,Python,Python Decorators,我有班上的英雄 class Hero: def __init__(self): self.positive_effects = [] self.negative_effects = [] self.stats = { "HP": 128, "MP": 42, "SP": 100, "Strength": 15, "Perception": 4
class Hero:
def __init__(self):
self.positive_effects = []
self.negative_effects = []
self.stats = {
"HP": 128,
"MP": 42,
"SP": 100,
"Strength": 15,
"Perception": 4,
"Endurance": 8,
"Charisma": 2,
"Intelligence": 3,
"Agility": 8,
"Luck": 1
}
def get_positive_effects(self):
return self.positive_effects.copy()
def get_negative_effects(self):
return self.negative_effects
def get_stats(self):
return self.stats.copy()
我需要创建装饰咒语,例如:
class AbstractEffect(Hero):
def __init__(self, base):
self.base = base
def get_stats(self):
self.base.get_stats()
def get_positive_effects(self):
self.base.get_positive_effects()
def get_negative_effects(self):
self.base.get_negative_effects()
class Berserk(AbstractEffect):
def __init__(self):
self.positive_effects.append('Berserk')
self.stats.HP += 50
self.stats.Strength += 7
self.stats.Endurance += 7
self.stats.Agility += 7
self.stats.Luck += 7
self.stats.Intelligence -= 3
self.stats.Perception -= 3
self.stats.Charisma -= 3
但是当我使用它的时候,我会犯错误
man = Hero()
man = Berserk(man)
TypeError回溯(最近一次调用上次)
在()
---->1人=狂暴(人)
怎么了 发生此错误的原因是
Berserk
的构造函数不接受Man
类型的对象。因此,您必须做的是更改构造函数的参数,这样您就可以传入Berserk(man)
现在,由于Berserk(man)接受两个参数,因此不应该出现错误。有关构造函数的更多信息,您可以查看可能提供更多信息的方法。您的berserk类init方法只接受一个参数(self),但您正在传递2,self和man。您在哪里看到“装饰器类”?或者您对“decorator”的定义与Python的decorator(cf)概念完全无关?如果是,您可能需要编辑问题的标题。
TypeError: __init__() takes exactly 1 argument (2 given)
class Berserk(AbstractEffect):
def __init__(self, man):
#....
self.stats.Charisma -= 3