【问题标题】:Declaring inner class out of the class将内部类声明出类
【发布时间】:2019-01-16 14:51:18
【问题描述】:

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

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

【问题讨论】:

    标签: python inner-classes


    【解决方案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 实现Factory Pattern。看看这篇文章:https://hub.packtpub.com/python-design-patterns-depth-factory-pattern/

    【讨论】:

    • 在你提到工厂模式之后,我深入研究了设计模式,我在 youtube youtube.com/… 上发现了非常好的系列。我很惊讶它的观点如此之少。我相信这将是我程序员道路上的一大步。
    猜你喜欢
    • 1970-01-01
    • 2019-06-05
    • 2022-01-01
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多