from folder.test.test1 import Test1
from folder.test.test2 import Test2
from other_folder import Test3
class Sample(Test1, Test2, Test3):
def __init__(self, version):
Test3.__init__(self)
if version == 'gen1':
self.__class__ = Test1
Test1.__init__()
elif version == 'gen2':
self.__class__ = Test2
Test2.__init__()
def login(self, ip):
pass
if __name__ == '__main__':
ob = Sample(version='gen2')
ob.login('192.168.1.100')
我收到此错误:
AttributeError: 'Test2' object has no attribute 'login'
尽管我有一个login()
类对象,但是无法访问类Sample
的{{1}}方法。
我希望对象可以访问Sample
,Sample
和Test2
方法(不是Test3
,因为版本是Test1
)。如果版本是'gen2'
,则'gen1'
对象只能访问Sample
,Sample
和Test1
方法,而不能访问Test3
答案 0 :(得分:0)
一种解决方案是将其分为2类(如果可以的话):
class BaseSample(Test3):
def login(self, ip):
pass
class SampleGen1(Test1, BaseSample):
pass
class SampleGen2(Test2, BaseSample):
pass
然后在代码中使用适当的类:
if version == 'gen1':
ob = SampleGen1()
elif version == 'gen2':
ob = SampleGen2()
ob.login('192.168.1.100')
对您有用吗?