gpt4 book ai didi

python - 基于构造函数参数的类的条件访问

转载 作者:太空宇宙 更新时间:2023-11-03 21:25:25 24 4
gpt4 key购买 nike

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'

尽管我有一个 Sample 类对象,但无法访问类 Samplelogin() 方法。

我希望对象能够访问 SampleTest2Test3 方法(不是 Test1 的方法,因为版本是'gen2')。如果版本为 'gen1',则 Sample 对象只能访问 SampleTest1Test3 方法,而不是 Test2 的方法。

最佳答案

一种解决方案是将其分为 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')

这对你有用吗?

关于python - 基于构造函数参数的类的条件访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53870239/

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