从类中声明内部类

时间:2019-01-16 14:51:18

标签: python inner-classes

我想在代码中使用内部类,但是在规划它的外观时遇到了问题,甚至可能是对它的不好使用,因此您可以帮助我找到其他编写方法。 我希望这个内部类可以在某些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>

所以我希望我可以在类之外甚至在其他模块中声明代码。

1 个答案:

答案 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/