如何在不使用Python初始化新类的情况下编辑继承类的属性?

质疑E

我的问题很好地显示了问题,因此我将直接进入代码。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不使用python初始化的情况下获取类对象的属性类型

TypeScript:如何在不使用明确赋值断言的情况下使用 setter 初始化类的成员?

如何在不使用常量数组大小的情况下初始化私有类中的数组?

如何在不使用'href'属性的情况下初始化jQuery UI Tabs?

在不使用指针的情况下,如何允许未初始化类类型的对象并确定何时是这种情况?

在不使用初始化方法的情况下将哈希传递给类

如何在不使用Python实例化的情况下获取类的类型?

如何在不使用现有Cookie的情况下初始化WKWebView

如何在SwiftUI中不使用某些View {}的情况下初始化View?

如何在Python中初始化继承的类

您如何在不使用继承的情况下为python类加上别名?

如何在不使用匿名对象的情况下初始化列表初始值设定项中的对象?

如何在不使用类或ID的情况下选择相同的属性?

如何在不初始化的情况下声明反序列化的类参数数组?

有什么方法可以在不使用继承的情况下将属性带入类?

有没有一种方法可以在不使用std :: move的情况下使用构造的类来初始化类?

C ++类:在没有构造函数重载的情况下初始化属性

如何在不使用gcloud auth登录创建的凭据文件的情况下初始化GoogleCredentials对象

如何在不使用eval()的情况下编写javascript十六进制初始化程序?

如何在不使用命名空间 chrono 的情况下初始化 std::chrono::duration 常量?

如何在保持原有其他属性不变的情况下使用新的order属性重新初始化jquery数据表?

如何在不使用类名的情况下从类中访问类本身

如何在不使用类的情况下反转Python中的优先级队列?

如何在不初始化的情况下将tf.keras.layers.layer分配给类?

如何在不编辑初始化脚本的情况下更改SysVinit服务?

在WPF应用程序中如何在没有主类的情况下初始化数据库(使用Entity Framework进行代码优先)

如何在不初始化第一个类的情况下从另一个类调用类方法?

如何在不使用类或伪类的情况下选择表行?

如何在不使用类加载器的情况下动态加载Java类?