从 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/