> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 상위 클래스 속성에 액세스하는 방법은 무엇입니까?

Python에서 상위 클래스 속성에 액세스하는 방법은 무엇입니까?

WBOY
풀어 주다: 2023-08-26 10:17:16
앞으로
1697명이 탐색했습니다.

Python에서 상위 클래스 속성에 액세스하는 방법은 무엇입니까?

객체 지향 프로그래밍에서 상속을 사용하면 기존 클래스의 속성과 메서드를 상속하는 새 클래스를 만들 수 있습니다. 이 강력한 개념은 프로그램의 코드 재사용, 모듈성 및 확장성을 가능하게 합니다. 상위 클래스 속성에 액세스하기 전에 상속에 대해 잠시 복습해 보겠습니다. Python에서는 클래스가 다른 클래스에서 상속되면 상위 클래스에 정의된 모든 속성과 메서드를 획득합니다. 이 메커니즘을 사용하면 보다 일반적인 기본 클래스의 기능을 상속하고 확장하는 특수 클래스를 만들 수 있습니다. 파생 클래스는 하위 클래스라고도 하며, 상속되는 클래스는 상위 클래스 또는 기본 클래스라고 합니다.

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

으아악

출력

으아악

이 예에는 부모와 자식이라는 두 가지 클래스가 있습니다. Child 클래스는 구문 클래스 Child(Parent)를 사용하여 Parent 클래스에서 상속됩니다. 이는 Child 클래스가 Parent 클래스에 정의된 모든 속성과 메서드를 상속한다는 의미입니다. Child 클래스에는 child_attribute라는 자체 속성도 있습니다.

访问父类属性

Python에서 상위 클래스 속성에 액세스하려면 인스턴스 또는 클래스 이름과 함께 점 표기법을 사용할 수 있습니다. 선택하는 접근 방식은 상황과 특정 요구 사항에 따라 달라집니다. 상위 클래스 속성에 액세스하는 다양한 방법을 살펴보겠습니다.

인스턴스 사용

如果您有子类的实例,您可以过实例直接访问父类性.够轻松访问它们。

这是一个示例 

으아악

출력

으아악

이 예에서 child.parent_attribute는 상위 클래스에 정의된 parent_attribute에 액세스합니다. 인스턴스를 통해 속성에 액세스하면 해당 속성과 연결된 값을 검색할 수 있습니다.

클래스 이름 사용

인스턴스를 통해 상위 클래스 속성에 액세스하는 것 외에도 하위 클래스 이름을 사용하여 액세스할 수도 있습니다. 이 접근 방식은 사용 가능한 인스턴스가 없지만 여전히 상위 클래스 속성에 직접 액세스하려는 경우에 유용합니다.

这是一个示例 

으아악

출력

으아악

이 경우 Child.parent_attribute는 상위 클래스에 정의된 parent_attribute에 액세스합니다. 클래스 이름을 사용하면 인스턴스 없이 상위 클래스 속성에 직접 액세스할 수 있습니다.

상위 클래스 메서드 액세스

继承不仅允许我们访问父类的属性, 还允许我们访问父类 的 当当一个子类从一个父类继承时,它继承了父类中味着你可以에서 전자를 선택하는 것이 좋습니다.中使用实例或类name调用这些방법입니다.

这是一个示例 

으아악

출력

으아악

이 예에서 Child 클래스는 Parent 클래스에서 parent_method를 상속합니다. Child 클래스의 인스턴스(child.parent_method())를 사용하거나 클래스 이름(Child.parent_method())을 직접 사용하여 이 메서드를 호출할 수 있습니다.

覆盖父类属性

경우에 따라 하위 클래스의 상위 클래스 속성을 재정의해야 할 수도 있습니다. 재정의는 하위 클래스의 특정 속성에 대해 다른 값이나 동작을 제공하는 것을 의미합니다. 하위 클래스의 속성을 재정의하면 앞서 설명한 기술을 사용하여 상위 클래스 속성에 계속 액세스하면서 해당 값을 사용자 정의할 수 있습니다.

这是一个示例 

으아악

출력

으아악

이 예에서는 부모 클래스와 자식 클래스 모두 shared_attribute라는 속성을 가지고 있습니다. 그러나 하위 클래스에서는 속성을 다른 값으로 재정의합니다. 하위 클래스(child.shared_attribute)의 인스턴스를 사용하여 속성에 액세스하면 하위 클래스에 정의된 재정의된 값을 검색합니다.

다중폭탄

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
로그인 후 복사

Output

I'm from Parent1
로그인 후 복사

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
로그인 후 복사

Output

I'm a protected attribute
I'm a private attribute
로그인 후 복사

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

Conclusion

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

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

위 내용은 Python에서 상위 클래스 속성에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿