super().__init__() 、 super(B,self).__init__()
需要注意的是python2、3的super写法稍有不同。
__init__()는 생성 시 "자동으로 호출됨"에서 Python의 생성자입니다. 객체.
定义类时可以不写init方法,系统会默认创建, 你也可以写一个,让你的类在创建时完成一些“动作”。
하위 클래스 B와 상위 클래스 A가 모두 초기화 메서드를 작성한 경우
그러면 A의 초기화 메서드가 B로 덮어쓰여집니다. A의 init 메소드를 호출하려면 super를 사용하여 호출해야 합니다.
물론 B 내에서는 super를 사용하여 부모 클래스의 메서드를 호출하는 것 외에도 부모 클래스 이름을 사용하여 호출할 수도 있습니다. 예:
class B(A): def __init__(self): A.__init__(self) print("B init")
어떤 분들은 오해하실 수도 있어요" "커버링"은 "커버링"하면 그런게 없다는 뜻인데 왜 아직도 슈퍼를 통해 호출이 가능한 걸까요?
덮어쓴다고 해서 A의 메서드가 여전히 존재한다는 의미는 아니지만 B 내부에서 super를 호출해야 합니다.
例: A里写了一个方法hi(), B继承自A, B里也写了一个方法hi()。 B的对象在外部调用hi(), 就只能调用B里面写的这个hi()。 想通过B调用A的hi(),只能在B内部用super().hi()调用。
class A: def hi(self): print("A hi") class B(A): def hello(self): print("B hello") b = B() b.hi() # B里没有写hi(),这里调用的是继承自A的hi() ------------------------------------------------------------------ class A: def hi(self): print("A hi") class B(A): def hi(self): print("B hi") b = B() b.hi() # 这里调用的就是B自己的hi() ------------------------------------------------------------------ class A: def hi(self): print("A hi") class B(A): def hi(self): super().hi() # 通过super调用父类A的hi() print("B hi") b = B() b.hi() # 这里调用的就是B里面的hi()
Python3.x와 Python2.x의 차이점: Python 3에서는 super(Class, self).xxx 대신 super().xxx를 직접 사용할 수 있습니다.
예:Python3.x 예:python3은 다음과 같이 직접 작성됩니다: super().__init__()
python2는 다음과 같이 작성되어야 합니다: super(class name, self).__init__()
class A: def add(self, x): y = x+1 print(y) class B(A): def add(self, x): super().add(x) b = B() b.add(2) # 3
#!/usr/bin/python # -*- coding: UTF-8 -*- class A(object): # Python2.x 记得继承 object def add(self, x): y = x+1 print(y) class B(A): def add(self, x): super(B, self).add(x) b = B() b.add(2) # 3
class A: def __init__(self): print('A')
class B(A): def __init__(self): print('B') super().__init__() class C(A): def __init__(self): print('C') super().__init__() class D(A): def __init__(self): print('D') super().__init__()
class E(B, C): def __init__(self): print('E') super().__init__() class F(C, D): def __init__(self): print('F') super().__init__() class G(E, F): def __init__(self): print('G') super().__init__()
상속된 콘텐츠 | |
---|---|
은 모두 | |
을 상속합니다. | 상속되지만 재정의됩니다. 초기화 방법을 얻었습니다|
상속하되 init 메서드를 재정의하고 init |
위 내용은 Python에서 super() 함수의 __init__() 메서드를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!