Welche Methoden gibt es zum Umschreiben übergeordneter Klassen in Python?

PHPz
Freigeben: 2023-05-04 23:52:13
nach vorne
2053 Leute haben es durchsucht

1.Grundlegende Anwendung

class Animal(object):
    def eat(self):
        print("动物吃东西")


class Cat(Animal):
    def eat(self):
        print("猫吃鱼")
        # 格式一:父类名.方法名(对象)
        Animal.eat(self)
        # 格式二:super(本类名,对象).方法名()
        super(Cat, self).eat()
        # 格式三:super()方法名()
        super().eat()


cat1 = Cat()
cat1.eat()
print(cat1)
Nach dem Login kopieren

2.Praktische Anwendung

#用元类实现单例模式
class SingletonType(type):
    instance = {}

    def __call__(cls, *args, **kwargs):
        if cls not in cls.instance:
            # 方式一:
            # cls.instance[cls] = type.__call__(cls, *args, **kwargs)
            # 方式二
            # cls.instance[cls] = super(SingletonType, cls).__call__(*args, **kwargs)
            # 方式三
            cls.instance[cls] = super().__call__(*args, **kwargs)
        return cls.instance[cls]


class Singleton(metaclass=SingletonType):
    def __init__(self, name):
        self.name = name


s1 = Singleton('1')
s2 = Singleton('2')
print(id(s1) == id(s2))
Nach dem Login kopieren

3.Achtung

1. Wenn eine Klasse Mehrfachvererbung hat, Die mehreren übergeordneten Klassen, die es erbt, haben dieselbe übergeordnete Klasse A. Sie müssen beim Umschreiben der übergeordneten Klasse darauf achten

Methode 1: Name der übergeordneten Klasse.Methodenname (Objekt)

#🎜 🎜 #
  • Die übergeordnete Klasse A wird mehrmals aufgerufen (je nach Anzahl der Vererbungen)

  • Übergeben Sie beim Umschreiben der übergeordneten Klasse alles nach Bedarf Erforderliche Parameter

Methode 2: super(Klassenname, Objekt).Methodenname()

    #🎜🎜 #Die übergeordnete Klasse A wird nur einmal aufgerufen
  • Beim Überschreiben der Methode der übergeordneten Klasse müssen alle Parameter übergeben werden
  • #🎜🎜 #2. Wenn eine Klasse über Vererbung verfügt und die entsprechenden Variablen in der Unterklasse neu geschrieben wurden, hat das Ändern der Variablen der übergeordneten Klasse keine Auswirkungen auf die Unterklasse
  • class Parent(object):
        x = 1
    
    class Child1(Parent):
        pass
    
    class Child2(Parent):
        pass
    
    print(Parent.x, Child1.x, Child2.x)
    Child1.x = 2
    print(Parent.x, Child1.x, Child2.x)
    Parent.x = 3
    print(Parent.x, Child1.x, Child2.x)
    Nach dem Login kopieren
    Ausgabeergebnis

    # 🎜 🎜#

    1 1 1

    1 2 1

    3 2 3

    Das obige ist der detaillierte Inhalt vonWelche Methoden gibt es zum Umschreiben übergeordneter Klassen in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage