【问题标题】:class inside another class in pythonpython中另一个类中的类
【发布时间】:2017-01-02 13:04:43
【问题描述】:

我不知道如何获得输出“二” 请帮助解决这个问题

class Main:
    class main2():
        def two(self):
            print 'two'
    def one(self):
        pass
        #self.main2.two()




boo = Main()
boo.one()

【问题讨论】:

    标签: python class oop methods


    【解决方案1】:

    因为two 是一个成员函数(有一个self 作为第一个参数)Main 类的实例可能需要一个内部类的实例作为成员:

    class Main:
        class main2():
            def two(self):
                print('two')
        def one(self):
            self.m2.two()
        def __init__(self):
            # here the instance gets an instance of the class Main.main2
            # as member
            self.m2 = Main.main2()
    
    
    boo = Main()
    boo.one()
    # boo.m2.two()
    

    或者你直接创建内部类的实例:

    m2 = Main.main2()
    m2.two()
    

    【讨论】:

    • 你不需要嘘;只是主要。会做
    • 当然,补充说。不确定你的问题到底是什么。
    • Main 类中的函数一必须从 main2 类中启动函数二。如何让它发挥作用?
    • @assffggew:做了一个小改动:one 现在调用two
    【解决方案2】:
    Main.main2().two()
    

    主要。 - 因为 main2 是在 Main 中定义的类,因此是该类的属性

    main2() - 实例化子类

    two() 执行方法

    【讨论】:

      【解决方案3】:

      您只是错过了一条语句,您还没有调用该方法。

      outer = Main()
      inner = outer.main2()
      # You can now call the method 
      inner.two()
      

      【讨论】:

      • 外部类不需要实例化
      • 而且不需要使用内部类来打印“二”。 OP问他应该如何使用它,该类可能稍后会被实例化使用..
      【解决方案4】:

      下面一行打印输出:

      boo.main2().two()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多