在python继承中,我们通常可以将父类的属性继承给子类。但是,我不明白在同一个类中继承的想法。这是什么意思?
class MyParentClass():
def __init__(self):
super(MyParentClass, self).__init__()
Run Code Online (Sandbox Code Playgroud) 这是我想要做的事情的粗略想法:
class PlayerModel(Timeline):
def __init__(self, name):
self.name = name
self.timeline_min = super(timeline_min) # I don't know the syntax for this
self.timeline_max = super(timeline_max) # I don't know the syntax for this
class Timeline:
def __init__(self):
self.timeline_min = 0
self.timeline_max = 120
def make_model(self, m_name):
return PlayerModel(m_name)
Run Code Online (Sandbox Code Playgroud)
我想PlayerModel拥有相同的属性Timeline:
self.timeline_min = 0
self.timeline_max = 120
Run Code Online (Sandbox Code Playgroud)
在 it's 中__init__,而不必将它们作为参数传递。我可以使用super()? 我找不到用父变量来做到这一点的方法。
我有一个带有具体方法的 Python ABC(我们称之为A)__init__(),以及一个实现这个 ABC 的类(我们称之为B)。据我了解,我不应该能够实例化 ABC。
问题:类函数super().__init__()内部的调用为什么以及如何工作?我假设创建了父类的一个实例 - 在本例中是 ABC。__init__Bsuper()
from abc import ABC, abstractmethod
from util.fileManager import FileManager
class A(ABC):
def __init__(self):
self.file_manager = FileManager() # Composition object
...
Run Code Online (Sandbox Code Playgroud)
from interfaces.A import A
class B(A):
def __init__(self):
super().__init__()
...
Run Code Online (Sandbox Code Playgroud)
Python 中的“super”有什么作用?- super().__init__() 和显式超类 __init__() 之间的区别
正如你们许多人可能已经看到的那样,这个问题实际上可以归结为super()Python 中的作用。接受我标记的答案,我真的想指出@KarlKnechtel评论中的链接,因为它帮助我进一步了解情况。
我如何知道 super() 在 MRO 中到底采用哪条路径?