gpt4 book ai didi

python - Python 2.7 中的子类

转载 作者:行者123 更新时间:2023-12-01 06:01:27 25 4
gpt4 key购买 nike

我正在尝试做一些我认为在面向对象编程中非常普通的事情但找不到有关 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com