python - 为什么我在子类上调用 super(...) 后属性没有继承?
问题描述
我正在尝试从子类中获取类属性。该属性被分配给超类初始化时的值。看:
class A:
_b = None
def __init__(self, a, b):
self.a = a
_b = b
class B(A):
def __init__(self, a, b):
super(B,self).__init__(a=a, b=b)
print('Try to get _b value:', self._b)
B(4,5)
在 B 类初始化时,super(...)。init被调用,因此应该调用 A 类的构造函数。这导致 b 被分配给 A._b。但是,当我尝试从 B 类获取 self._b 时,它似乎没有初始化 A,因为 self._b 等于 None。
解决方案
您A.__init__
没有初始化self._b
,它初始化了一个名为_b
. 由于这是一个局部变量,它会在该函数返回后立即消失。
推荐阅读
- python - 自定义队列系统的技术建议
- python - 将最终数据从 numpy 导出到 excel
- spring-boot - 一个应用程序的 Keycloak 身份验证客户端无法访问同一领域中的另一个客户端应用程序
- c++ - C++中的多维数组和指针
- php - 在 Docker 中安装 pecl 时出现“无可用版本”错误
- visual-studio-2019 - 关于 Microsoft Visual Studio 集成终端的问题
- ios - [CRITICAL]- 在 App Store 连接时存档时 iOS 应用程序崩溃
- javascript - reactjs中发布请求时如何禁用SSL证书验证?
- django - Django Admin:将超链接添加到相关模型
- swift - swift中的列表问题(Xcode 13.0)