首页 > 解决方案 > Python 3 中的内部类中的超级

问题描述

为什么这有效

class A():
   def __init__(self):
       self.B = self.__B__()
    
   class __B__():
       def __init__(self):
           pass
       def speak(self):
           print("Hi, I'm B")
            
   def speak(self):
       print("Hi, I'm A")

这有效:

class A():
    def __init__(self):
        super(A, self).__init__()
            
    def speak(self):
        print("Hi, I'm A")

但这不是吗?

class A():
    def __init__(self):
        super(A,self).__init__()
        self.B = self.__B__()
    
    class __B__():
        def __init__(self):
            super(__B__,self).__init__()
        def speak(self):
            print("Hi, I'm B")
            
    def speak(self):
        print("Hi, I'm A")

我得到了__B__不存在的消息。另外,做super(ClassName,self).__init__()什么以及为什么应该/不应该使用它?

标签: pythonpython-3.xoop

解决方案


推荐阅读