【问题标题】:python initialize class and base class using class methodpython使用类方法初始化类和基类
【发布时间】:2025-11-26 00:20:27
【问题描述】:

我正在尝试从文本文件输入初始化派生类。我正在尝试做的一个简单示例:

文件.txt:

1
2

main.py:

class Base:
    def __init__(self, val1):
        self.val1 = val1
    def input_from_text(cls, init_deque):
        #return cls(init_deque.popleft())

class Derived(Base):
    def __init__(self, val1, val2):
        Base.__init__(self, val1)
        self.val2 = val2
    def input_from_text(cls, init_deque):
        #initialize base and derived here and return derived

def main(argv=None):
    initialized_derived = Derived.input_from_text(deque(open("file.txt")))
    assert initialized_derived.val1 is 1
    assert initialized_derived.val2 is 2

有什么好办法吗?基本上是在寻找类似于你在 C++ 中找到的东西:

//calls operator>>(Base) then operator>>(Derived)
cin >> initialized_derived;

这样每个类都被很好地封装了,基类/派生类不需要了解彼此的任何信息(__init__ 除外,它知道基类参数的数量)。

【问题讨论】:

    标签: class python-3.x inheritance initialization


    【解决方案1】:

    刚刚意识到我做错了。简单的解决方法是执行以下操作:

    class Base:
        def __init__(self):
            pass
        def input_from_text(self, init_deque):
            self.val1 = init_deque.popleft()
    
    class Derived(Base):
        def __init__(self):
            Base.__init__(self)
        def input_from_text(self, init_deque):
            Base.input_from_text(self, init_deque)
            self.val2 = init_deque.popleft()
    

    【讨论】: