为什么我的子类没有从它的抽象类继承属性

问题描述 投票:0回答:0

我尝试从抽象类

Class2
创建一个抽象类
Class1
如下

from abc import ABC
class Class1(ABC):
     def __init__(self, x: int) -> None:
        self.val1 = x
        
class Class2(Class1):
    def __init__(self, y: int) -> None:
        self.val2 = y       

当我实例化Class2并获取它的属性时,得到如下结果

b = Class2(5)
b.val2
# 2
b.val1
# Traceback (most recent call last):
#  File "<stdin>", line 1, in <module>
# AttributeError: 'Class2' object has no attribute 'val1'. Did you mean: 'val2'?

我的问题是:

  1. 我怎么知道
    Class2
    是一个抽象类,而不是一个具体的子类?有没有办法确保它是一个抽象类?有了
    Class1
    我肯定知道由于参数
    ABC
    (如
    class Class1(ABC)
    )而
    Class2
    没有那个参数
    ABC
    .
  2. 为什么
    Class2
    没有继承
    val1
    的属性
    Class1
  3. Class2
    派生的
    Class1
    怎么可能从其父
    val2
    具有不同/附加属性
    Class1
python oop abstract-class
© www.soinside.com 2019 - 2024. All rights reserved.