继承方法的Python命名空间(属性)

2024-04-23 20:40:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我要做的是使用某个命名空间访问继承的方法,例如:

class ExtraMeths(object):
    def specialmeth():
        pass

class MainClass(ExtraMeths):
    def standardmeth():
       pass
myclass = MainClass()
myclass.standardmeth()  #works
myclass.specialmeth()  #also works, but not ideal

现在理想情况下,我想做的是运行myclass.ExtraMeths.specialmeth(),其中名称ExtraMeths并不重要,但它位于它自己的主类“属性”中。同样重要的是继承类是继承的,也就是说,相同的self变量对它可用。你知道吗

原因是有很多方法,我想对它们进行排序,所以将相似的方法分组似乎是有意义的。你知道吗


Tags: 方法objectdefmyclass空间pass命名class
1条回答
网友
1楼 · 发布于 2024-04-23 20:40:09

这应该用合成法来完成:

class ExtraMeths(object):
    def __init__(self, main):
        self.main = main

    def specialmeth(self):
        # can use self.main here to access outer class variables

class MainClass(object):
    def __init__(self):
        self.extra_meths = ExtraMeths(self)

    def standardmeth(self):
        pass

myclass = MainClass()
myclass.standardmeth()
myclass.extra_meths.specialmeth()

相关问题 更多 >