Python名称空间(Property)的继承方法

时间:2017-08-31 18:59:49

标签: python class inheritance properties

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

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并不重要,但它属于自己的属性&#39;主要班级。继承类也是重要的,即可以使用相同的abstract class TestBase { self => type T >: self.type <: TestBase } class Test1 extends TestBase { type T = Test1 } class Test2 extends Test1{ override type T = Test1 // daaaaamn } 变量。

原因是有很多方法,我想给它们带来一些顺序,所以将类似的方法组合起来似乎是有道理的。

1 个答案:

答案 0 :(得分:2)

这应该使用作文来完成:

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()