Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在类外声明内部类_Python_Inner Classes - Fatal编程技术网

Python 在类外声明内部类

Python 在类外声明内部类,python,inner-classes,Python,Inner Classes,我想在我的代码中使用内部类,但我在规划它应该是什么样子时遇到了问题,甚至可能它的使用不好,所以您可以帮助我找到其他方法来编写它。 我希望这个内部类是在一些if结构中创建的,具体取决于输入中提供的字符串。如果我能在它的父类之外编写这个内部类的代码,那就太好了,因为它将来可能会很大,而且应该很容易扩展 我想知道是否应该像Case1(Case1)那样使用继承,但我不确定这一点 class Example: def declare_specific_case(self): if

我想在我的代码中使用内部类,但我在规划它应该是什么样子时遇到了问题,甚至可能它的使用不好,所以您可以帮助我找到其他方法来编写它。 我希望这个内部类是在一些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>
类示例:
def声明特定情况(自身):
如果foo中的“case1”:
类别个案1:
通过
foo中的elif“案例2”:
类别2:
通过
类别个案1:

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

您可以这样做:

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实现工厂模式。看看这篇文章:

您可以这样做:

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实现工厂模式。看看这篇文章:

在你提到工厂模式之后,我深入研究了设计模式,我在youtube上找到了非常不错的系列。我很惊讶它的视野如此之小。我相信这将是我程序员道路上的一大步。在你提到工厂模式之后,我深入研究了设计模式,在youtube上找到了非常好的系列。我很惊讶它的视野如此之小。我相信这将是我程序员道路上的一大步。