我的问题很好地说明了问题,所以我将直接进入代码。
class Boxer:
def __init__(self, name):
self.name = name
self.health = 100
self.damage = 20
self.power = 30
这是原始类或父类
class Prince(Boxer):
self.damage = 40
self.health = 80
我想做的是继承大部分类属性,并且只编辑这两个(伤害,生命值),有什么方法可以做到这一点而不必创建整个其他类?
最佳答案
好吧,有两件事不太对劲。首先,Prince
- self
的代码只能在方法内部使用,例如构造函数。 Prince 的属性实际上应该如下所示:
class Prince(Boxer):
damage = 40
health = 80
其次,Boxer
中的构造函数在调用时将覆盖这些默认值。因此,对于那些可重写的,您需要在类定义中设置属性,而不是构造函数:
class Boxer:
health = 100
damage = 20
power = 30
def __init__(self, name):
self.name = name
这应该会让您按照预期的方式工作。
编辑
如果您确实不想为每种类型的拳击手使用子类,则另一种选择可能是在构造函数中使用默认值,并且可以覆盖这些默认值。所以:
class Boxer:
def __init__(self, name, health=100, damage=20, power=30):
self.name = name
self.health = health
self.damage = damage
self.power = power
然后:
Boxer("Alan") # Ordinary boxer
Boxer("Prince", damage=40, health=80) # Prince is special
关于python - 如何在Python中编辑继承类的属性而不初始化新类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48053797/