【发布时间】:2021-09-14 05:53:29
【问题描述】:
这有点令人困惑,我试图用简单的英语解释它,但很难理解。相反,我编写了以下玩具代码来说明问题。此代码运行良好并打印出预期的输出,但是我的 linter 抱怨显示的行。
- 这是 linter 的问题吗?
- 或者我可以做些什么来阻止 linter 抱怨这个吗?
- 或者这是不好的做法/设计,我应该以某种方式解决它?
from abc import ABC
class SuperClassVariable(ABC):
def __init__(self, shared_value: str):
self.shared_value = shared_value
class SubClassVariable1(SuperClassVariable):
def __init__(self, shared_value: str, sub_class_value_1: str):
super().__init__(shared_value=shared_value)
self.sub_class_value_1 = sub_class_value_1
class SubClassVariable2(SuperClassVariable):
def __init__(self, shared_value: str, sub_class_value_2: str):
super().__init__(shared_value=shared_value)
self.sub_class_value_2 = sub_class_value_2
class SuperClass(ABC):
def __init__(self, sub_class_variable: SuperClassVariable):
self.sub_class_variable = sub_class_variable
class SubClass1(SuperClass):
def __init__(self, sub_class_variable: SubClassVariable1):
super().__init__(sub_class_variable=sub_class_variable)
class SubClass2(SuperClass):
def __init__(self, sub_class_variable: SubClassVariable2):
super().__init__(sub_class_variable=sub_class_variable)
sub_class_variable_1 = SubClassVariable1(
shared_value="shared_value",
sub_class_value_1="sub_class_variable_1"
)
sub_class_variable_2 = SubClassVariable2(
shared_value="shared_value",
sub_class_value_2="sub_class_variable_2"
)
sub_class_1 = SubClass1(sub_class_variable=sub_class_variable_1)
sub_class_2 = SubClass2(sub_class_variable=sub_class_variable_2)
print(sub_class_1.sub_class_variable.shared_value) # OK
print(sub_class_1.sub_class_variable.sub_class_value_1) # Cannot access member "sub_class_value_1" for type "SuperClassVariable"
print(sub_class_2.sub_class_variable.shared_value) # OK
print(sub_class_2.sub_class_variable.sub_class_value_2) # Cannot access member "sub_class_value_1" for type "SuperClassVariable"
输出:
shared_value
sub_class_variable_1
shared_value
sub_class_variable_2
【问题讨论】:
标签: python oop inheritance pylance