Heim > Backend-Entwicklung > Python-Tutorial > Wie greife ich in Python auf die Eigenschaften der übergeordneten Klasse zu?

Wie greife ich in Python auf die Eigenschaften der übergeordneten Klasse zu?

WBOY
Freigeben: 2023-08-26 10:17:16
nach vorne
1724 Leute haben es durchsucht

Wie greife ich in Python auf die Eigenschaften der übergeordneten Klasse zu?

Bei der objektorientierten Programmierung ermöglicht uns die Vererbung, neue Klassen zu erstellen, die die Eigenschaften und Methoden einer vorhandenen Klasse erben. Dieses leistungsstarke Konzept ermöglicht die Wiederverwendung von Code, Modularität und Erweiterbarkeit in unseren Programmen. Bevor wir uns mit dem Zugriff auf übergeordnete Klassenattribute befassen, wollen wir uns kurz mit der Vererbung befassen. Wenn in Python eine Klasse von einer anderen Klasse erbt, erwirbt sie alle in der übergeordneten Klasse definierten Attribute und Methoden. Dieser Mechanismus ermöglicht es uns, spezialisierte Klassen zu erstellen, die die Funktionalität einer allgemeineren Basisklasse erben und erweitern. Die abgeleitete Klasse wird auch als untergeordnete Klasse bezeichnet, während die Klasse, von der geerbt wird, als übergeordnete Klasse oder Basisklasse bezeichnet wird.

Beispiel

这里有一个简单的示例来说明继承的概念 -

class Parent:
   def __init__(self):
      self.parent_attribute = "I'm from the parent class"

class Child(Parent):
   def __init__(self):
      super().__init__()
      self.child_attribute = "I'm from the child class"

child = Child()
print(child.parent_attribute)  # Accessing parent class attribute
print(child.child_attribute)
Nach dem Login kopieren

Ausgabe

I'm from the parent class
I'm from the child class
Nach dem Login kopieren

In diesem Beispiel haben wir zwei Klassen: Eltern und Kind. Die Child-Klasse erbt von der Parent-Klasse mithilfe der Syntax class Child(Parent). Das bedeutet, dass die Child-Klasse alle in der Parent-Klasse definierten Attribute und Methoden erbt. Die Child-Klasse verfügt außerdem über ein eigenes Attribut namens child_attribute.

访问父类属性

Um auf ein übergeordnetes Klassenattribut in Python zuzugreifen, können Sie die Punktnotation zusammen mit dem Instanz- oder Klassennamen verwenden. Welchen Ansatz Sie wählen, hängt vom Kontext und Ihren spezifischen Anforderungen ab. Lassen Sie uns die verschiedenen Methoden für den Zugriff auf übergeordnete Klassenattribute erkunden:

Verwenden der Instanz

如果您有子类的实例,您可以通过实例直接访问父类的属性.实例保留了从父类继承的所有属性和方法,使您能够轻松访问它们.

Beispiel

这是一个示例 

class Parent:
   def __init__(self):
      self.parent_attribute = "I'm from the parent class"

class Child(Parent):
   def __init__(self):
      super().__init__()
      self.child_attribute = "I'm from the child class"

child = Child()
print(child.parent_attribute)  # Accessing parent class attribute using instance
Nach dem Login kopieren

Ausgabe

I'm from the parent class
Nach dem Login kopieren
Nach dem Login kopieren

In diesem Beispiel greift child.parent_attribute auf das in der übergeordneten Klasse definierte parent_attribute zu. Indem Sie über die Instanz auf das Attribut zugreifen, können Sie den diesem Attribut zugeordneten Wert abrufen.

Verwendung des Klassennamens

Zusätzlich zum Zugriff auf übergeordnete Klassenattribute über eine Instanz können Sie auch über den Namen der untergeordneten Klasse darauf zugreifen. Dieser Ansatz ist nützlich, wenn keine Instanz verfügbar ist, Sie aber dennoch direkt auf das Attribut der übergeordneten Klasse zugreifen möchten.

Beispiel

这是一个示例 

class Parent:
   parent_attribute = "I'm from the parent class"

class Child(Parent):
   child_attribute = "I'm from the child class"

print(Child.parent_attribute)  # Accessing parent class attribute using class name
Nach dem Login kopieren

Ausgabe

I'm from the parent class
Nach dem Login kopieren
Nach dem Login kopieren

In diesem Fall greift Child.parent_attribute auf das in der übergeordneten Klasse definierte parent_attribute zu. Durch die Verwendung des Klassennamens können Sie direkt auf das übergeordnete Klassenattribut zugreifen, ohne dass eine Instanz erforderlich ist.

Zugriff auf übergeordnete Klassenmethoden

继承不仅允许我们访问父类的属性,还允许我们访问父类的方法.当一个子类从一个父类继承时,它继承了父类中定义的所有方法.这意味着你可以在子类中使用实例或类名调用这些方法.

Beispiel

这是一个示例 

class Parent:
   def parent_method(self):
      print("This is a method from the parent class")

class Child(Parent):
   def __init__(self):
      super().__init__()

child = Child()
child.parent_method()  # Accessing parent class method using instance
Child.parent_method()  # Accessing parent class method using class name
Nach dem Login kopieren

Ausgabe

This is a method from the parent class
This is a method from the parent class
Nach dem Login kopieren

In diesem Beispiel erbt die Child-Klasse die parent_method von der Parent-Klasse. Wir können diese Methode mithilfe einer Instanz der Child-Klasse (child.parent_method()) oder direkt mithilfe des Klassennamens (Child.parent_method()) aufrufen.

覆盖父类属性

In einigen Fällen müssen Sie möglicherweise ein übergeordnetes Klassenattribut in der untergeordneten Klasse überschreiben. Überschreiben bedeutet, einen anderen Wert oder ein anderes Verhalten für ein bestimmtes Attribut in der untergeordneten Klasse bereitzustellen. Indem Sie das Attribut in der untergeordneten Klasse neu definieren, können Sie seinen Wert anpassen, während Sie weiterhin Zugriff auf das Attribut der übergeordneten Klasse haben, indem Sie die zuvor besprochenen Techniken verwenden.

Beispiel

这是一个示例 

class Parent:
   def __init__(self):
      self.shared_attribute = "I'm from the parent class"

class Child(Parent):
   def __init__(self):
      super().__init__()
      self.shared_attribute = "I'm from the child class"

child = Child()
print(child.shared_attribute)  # Accessing overridden attribute
Nach dem Login kopieren

Ausgabe

I'm from the child class
Nach dem Login kopieren

In diesem Beispiel haben sowohl die Parent- als auch die Child-Klasse ein Attribut namens shared_attribute. In der untergeordneten Klasse definieren wir das Attribut jedoch mit einem anderen Wert neu. Wenn wir über eine Instanz der untergeordneten Klasse (child.shared_attribute) auf das Attribut zugreifen, rufen wir den in der untergeordneten Klasse definierten überschriebenen Wert ab.

多重继承

Python支持多继承,这意味着一个类可以继承多个父类。在使用多继承时,访问父类属性可能会变得更加复杂.在这种情况下,您可能需要使用方法解析顺序(MRO )或super()函数来明确指定要访问的父类属性.

Example

这是一个多继承和访问父类属性的示例

class Parent1:
   def __init__(self):
      self.shared_attribute = "I'm from Parent1"

class Parent2:
   def __init__(self):
      self.shared_attribute = "I'm from Parent2"

class Child(Parent1, Parent2):
   def __init__(self):
      super().__init__()

child = Child()
print(child.shared_attribute)  # Accessing parent class attribute in multiple inheritance
Nach dem Login kopieren

Output

I'm from Parent1
Nach dem Login kopieren

In this example, the Child class inherits from both Parent1 and Parent2 classes. When we create an instance of the Child class and access the shared_attribute, it retrieves the value defined in Parent1.

受保护和私有属性

受保护的属性通常以单下划线(_)作为前缀,表示它们不应该在类外部直接访问,但仍然可以被子类访问。另一方面,私有属性通常以双下划线(__)作为前缀,表示它们只能在类内部访问。

示例

这是一个示例

class Parent:
   def __init__(self):
      self._protected_attribute = "I'm a protected attribute"
      self.__private_attribute = "I'm a private attribute"

class Child(Parent):
   def __init__(self):
      super().__init__()

child = Child()
print(child._protected_attribute)   # Accessing protected attribute
print(child._Parent__private_attribute)   # Accessing private attribute
Nach dem Login kopieren

Output

I'm a protected attribute
I'm a private attribute
Nach dem Login kopieren

在这个例子中,父类有一个受保护的属性_protected_attribute和一个私有属性__private_attribute。子类Child仍然可以访问这两个属性。然而,访问私有属性需要使用名称混淆技术,格式为_ClassName__private_attribute。

Conclusion

继承是一种强大的功能,它允许我们创建类层次结构并在现有功能的基础上构建。通过访问父类属性,我们可以在程序中实现代码重用和模块化。

我们学到了可以使用实例或类名来访问父类属性。通过实际示例,我们看到了如何使用子类的实例访问父类属性,以及如何直接使用类名访问它们。

Das obige ist der detaillierte Inhalt vonWie greife ich in Python auf die Eigenschaften der übergeordneten Klasse zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.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