我想要做的是使用某个命名空间访问继承的方法,例如:
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
并不重要,但它属于自己的属性'主要班级。继承类也是重要的,即可以使用相同的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
}
变量。
原因是有很多方法,我想给它们带来一些顺序,所以将类似的方法组合起来似乎是有道理的。
答案 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()