我正在尝试做一些我认为在面向对象编程中非常普通的事情 但找不到有关 Python 2.7 的任何文档 我想创建一个父类(super class)的子类,当我完成后 父类(super class) 绑定(bind)到父类(super class) superclass.subclass 绑定(bind)到子类并且 子类不绑定(bind)任何内容。 这是我能想到的最佳解决方案:
class superclass:
pass
class subclass(superclass):
pass
superclass.subclass = subclass
del subclass
有时我希望子类位于它自己的文件中,有时则不然。 有没有更优雅的解决方案,我不必手动执行 最后两行? 虽然
class superclass:
class subclass:
pass
几乎做了正确的事情,子类实际上并没有从父类(super class)继承。 如果我尝试这样做:
class superclass:
class subclass(superclass):
pass
我收到一条错误消息,表明父类(super class)未绑定(bind)。
最佳答案
我同意其他人的观点,这是一件愚蠢的事情,我认为你不应该这样做,但为了知识的利益:
class Superclass(object):
pass
Superclass.Subclass = type('Subclass', (Superclass,), {
'foo': lambda self: self,
})
其中字典参数包含任何方法。我认为没有一个很好的方法来使用 class
来做到这一点语法,但这实际上只是调用 type
的语法糖。无论如何。
您不必将方法定义为 lambda
s;它们可以是 def
的普通函数只要他们有 self
争论。不过,如果您这样做,您可能会想隐藏它们的定义......
关于python - Python 2.7 中的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10222089/