8
从某一基类派生的类都定义被称为“路径”的属性。在鸭打字的感觉,我可以在子类中依赖的定义:将参数传递给基类构造函数或使用实例变量?
class Base:
pass # no "path" variable here
def Sub(Base):
def __init__(self):
self.path = "something/"
另一种可能是使用基类的构造函数:
class Base:
def __init__(self, path):
self.path = path
def Sub(Base):
def __init__(self):
super().__init__("something/")
我使用Python 3.1。
你会喜欢,为什么?有没有更好的办法?
没有什么脆弱关于'超()'。脆弱性在2.x语法中,它在3.x(OP所使用的,如super()调用所示)中是固定的,并且通常是多重继承。没有任何理由可以直接在Python 3.x中调用baseclass方法,“super().__ init(...)”语法永远不会更糟,通常也更好。 – 2010-04-28 10:04:18
通过使用'super'的情况来看,我猜想,守护进程正在使用py3k – SilentGhost 2010-04-28 10:04:25
@Thomas武泰:你会如何使用超级如果你所有的多重继承和基类具有不同的构造函数签名?将派生类的所有参数传递给所有基类看起来就像是一个肮脏的黑客攻击,依赖于命名参数,并让基类理清他们所需要的东西并不是太好。 – kriss 2014-04-14 10:04:24