从 class 中声明内部 class
Declaring inner class out of the class
我想在我的代码中使用 inner class 但我在规划它的外观时遇到了问题,甚至可能它的使用不当所以你可以帮助我找到其他方式来编写它。
我希望这个内部 class 会在某些 if 结构中创建,具体取决于输入中提供的字符串。如果我可以在它的父 class 之外编写这个内部 class 的代码,那就太好了,因为它将来可能会很大,而且应该很容易扩展。
我想知道我是否应该像 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>
所以我希望我可以在 class 之外甚至在其他模块中声明代码。
你可以这样做:
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/
我想在我的代码中使用 inner class 但我在规划它的外观时遇到了问题,甚至可能它的使用不当所以你可以帮助我找到其他方式来编写它。 我希望这个内部 class 会在某些 if 结构中创建,具体取决于输入中提供的字符串。如果我可以在它的父 class 之外编写这个内部 class 的代码,那就太好了,因为它将来可能会很大,而且应该很容易扩展。
我想知道我是否应该像 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>
所以我希望我可以在 class 之外甚至在其他模块中声明代码。
你可以这样做:
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/