我想在代码中使用内部类,但是在规划它的外观时遇到了问题,甚至可能是对它的不好使用,因此您可以帮助我找到其他编写方法。 我希望这个内部类可以在某些if结构中创建,具体取决于输入中提供的字符串。如果我可以在其父类之外编写此内部类的代码,那会很好,因为将来它可能很大,并且应该易于扩展。
我想知道我是否应该像Case1(Case1)这样使用继承,但是我对此不确定。
class Example:
def declare_specific_case(self):
if "case1" in foo:
class Case1:
pass
elif "case2" in foo:
class Case2:
pass
class Case1:
<some code which can be used in inner class>
所以我希望我可以在类之外甚至在其他模块中声明代码。
答案 0 :(得分:2)
您可以执行以下操作:
class Class1: pass
class Class2: pass
class Wrapper:
def __init__(self, x):
if x:
self._inner = Class1
else:
self._inner = Class2
甚至您也可以像这样添加便捷方法:
class Wrapper:
# ...
def get_inner_class_instance(self, *args, **kwargs):
return self._inner(*args, **kwargs)
另一方面,也许您想研究如何使用python实现Factory Pattern
。看一下这篇文章:https://hub.packtpub.com/python-design-patterns-depth-factory-pattern/