python - 为什么我没有在其派生类的实例中初始化继承类实例属性失败时收到错误消息?
问题描述
当我初始化 B 类的实例时,它不应该因为未尝试在 A 类的init方法中为 x 属性提供值而引发错误吗?如果 x 未提供值,我想引发错误怎么办?
例子:
class A:
def __init__(self, x):
self.x = x
class B(A):
def __init__(self, y):
self.y = y
z = B(4) #Shouldn't I be getting an error for not attempting to
#initialize x from the base class?
解决方案
不,你正在做的是初始化 y,因为在你的 B 类的初始化中,你没有调用你的父母构造函数
super.__init__()
如果你想同时使用 B 中的 x,y 并且必须从 B 中初始化 x,你应该使用这个:
class A:
def __init__(self, x):
self.x = x
class B(A):
def __init__(self, x, y):
super().__init__(x)
self.y = y
推荐阅读
- mysql - 如何使用mysql脚本以跳过现有顺序的方式生成行号作为顺序
- amazon-web-services - 使用 API Gateway/Lambda 函数处理来自各个域的 CNAME 请求
- java - Android 1 多实时过滤 EditText 的
- javascript - 使用钩子在 React 中对回调进行去抖动/节流,而无需等待用户停止输入以获取更新
- jenkins - 如何设置 Jenkins 服务/system.d 在服务器重启时自动运行
- python-3.x - 最重要的是 JSON 解析和检查条件
- html - 已解决 Index.html 在服务器上找不到 Img
- apache-flink - Flink Operator 查看 UID
- reactjs - 调整 react-beautiful-dnd 的大小
- google-sheets - 使用查询拆分和重新加入名称