찾다
백엔드 개발파이썬 튜토리얼Python의 생성자 메서드 분석(예제 포함)

이 기사의 내용은 Python의 구성 방법 분석에 관한 것입니다(예제 포함). 필요한 친구가 참고할 수 있기를 바랍니다.

Python에서는 __init__(self)와 같이 함수 이름 앞뒤에 이중 밑줄이 오는 것을 볼 수 있습니다. 객체가 이러한 메서드 중 하나를 사용하는 경우 해당 메서드는 특별한 상황에서 실행되지만 이러한 메서드가 직접 호출되는 경우는 거의 없습니다.

이전 버전의 Python 코드와 호환될 필요가 없다면 모든 클래스를 새로운 스타일의 클래스로 작성하고 코드 작성 시 super 함수와 같은 기능을 사용해야 합니다.

Python 3.0에는 "이전 스타일" 클래스가 없으며 Object를 하위 클래스로 분류하거나 메타 클래스를 유형으로 설정할 필요가 없습니다(코드의 시작 줄 __metaclass__=type). 이는 모든 클래스가 암시적으로 Object의 하위 클래스가 되기 때문입니다. . 명시적인 슈퍼클래스가 없으면 직접 서브클래스화되고, 그렇지 않으면 간접적으로 서브클래스화됩니다.

Python의 생성자 메서드

생성자 메서드는 다른 메서드와 다릅니다. 객체가 생성되면 생성자 메서드가 즉시 호출됩니다.

일반 메소드 및 특수 생성자 재작성:

상속의 개념을 이해한 후에는 각 클래스가 하나 이상의 슈퍼클래스를 가질 수 있으며 하위 클래스는 상위 클래스에서 상위 클래스의 일부 동작을 상속한다는 것을 알게 됩니다. 그뿐만 아니라, 상속 동작을 사용자 정의하기 위해 일부 슈퍼 클래스 메서드를 재정의할 수도 있습니다.

class Bird:
    def __init__(self):
        self.hungry=True
    def eat(self):
        if self.hungry:
            print('我在吃')
            self.hungry=False
        else:
            print('我吃饱了,谢谢')
sb=Bird()
sb.eat()
sb.eat()

인쇄 결과:

我在吃
我吃饱了,谢谢

새가 배불리 먹은 후 배고픔 상태가 False로 변경되어 먹기 함수가 호출되면, 배부르다고 인쇄되어 있어요. 감사합니다. 이는 클래스에서 __init__ 함수를 사용하는 것입니다. 확장된 사례를 살펴보겠습니다. 먹는 것은 새의 기본 특성이며, 새는 새의 기본 클래스라고 할 수 있습니다. 이제 노래하는 새를 작성합니다. 왜냐하면 우리는 이미 새 기본 클래스를 작성했고 이제 이를 상속받기만 하면 됩니다. 우리의 새는 기본적으로 노래할 뿐만 아니라 먹는 기술도 배울 것입니다.

class Bird:
    def __init__(self):
        self.hungry=True
    def eat(self):
        if self.hungry:
            print('ahhh')
            self.hungry=False
        else:
            print('no thanks')

class SongBird(Bird):
    def __init__(self):

        self.sound='Squawk'

    def sing(self):
        print(self.sound)
sb=SongBird()
sb.sing()
sb.eat()
sb.eat()

인쇄 결과:

Traceback (most recent call last):
Squawk
  File "F:/Python培训/博客园随笔专用/文件操作/文件读写.py", line 20, in <module>
    sb.eat()
  File "F:/Python培训/博客园随笔专用/文件操作/文件读写.py", line 5, in eat
    if self.hungry:
AttributeError: &#39;SongBird&#39; object has no attribute &#39;hungry&#39;

안타깝게도 새가 노래 기능을 실행할 수 있지만 상위 클래스의 식사 기능이 호출되면 예외가 발생합니다. 상위 클래스에 정의된 먹기 기능을 살펴보세요. 먹기 기능을 시작하려면 배고픈 속성을 설정해야 합니다. 그러나 의문스러운 점은 우리가 기본 클래스인 Bird를 상속받았고 Bird도 배고픔을 정의하는데 왜 작동하지 않는다는 것입니다. 이는 배고픈 속성이 상위 클래스가 자체 생성자를 호출할 때만 적용되기 때문입니다. SingBird는 Bird의 모든 기능을 상속하지만 Bird의 초기화 기능을 실행하지는 않는 것을 볼 수 있습니다. 다음 코드를 수정하세요

class Bird:
    def __init__(self):
        self.hungry=True
    def eat(self):
        if self.hungry:
            print(&#39;ahhh&#39;)
            self.hungry=False
        else:
            print(&#39;no thanks&#39;)
class SongBird(Bird):
    def __init__(self):
        Bird.__init__(self)
        self.sound=&#39;Squawk&#39;
    def sing(self):
        print(self.sound)
sb=SongBird()
sb.sing()
sb.eat()
sb.eat()

출력 결과:

Squawk
ahhh
no thanks

SongBird 클래스를 초기화할 때 Bird의 초기화 함수를 호출한다는 것을 코드에서 알 수 있습니다. 따라서 Bird의 생성자가 트리거됩니다. 이제 우리 새들은 노래할 수 있을 뿐만 아니라 기본 종의 먹는 행동도 갖게 되었습니다.

실행 과정을 다시 살펴보세요. SongBird는 자체적으로 초기화되는 동안 자신을 상위 클래스에 매개변수로 전달합니다. 이는 나를 만들 때 나에게 타고난 기술(스스로 먹이를 주는 방법을 아는 것)을 주어야 했다는 것을 상위 클래스에 알리는 것을 의미합니다. 즉, 배고픈 속성이 설정됩니다.

슈퍼 함수 사용

위 방법은 3.0 이전에 작성된 것입니다. 위의 문제를 해결하기 위해 새로운 클래스에서는 슈퍼 함수를 ​​사용할 것입니다.

class Bird:
    def __init__(self):
        self.hungry=True
    def eat(self):
        if self.hungry:
            print(&#39;ahhh&#39;)
            self.hungry=False
        else:
            print(&#39;no thanks&#39;)
class SongBird(Bird):
    def __init__(self):
        super(SongBird, self).__init__()
        self.sound=&#39;Squawk&#39;
    def sing(self):
        print(self.sound)
sb=SongBird()
sb.sing()
sb.eat()
sb.eat()

현재 클래스와 객체가 매개변수로 호출되며, 함수에서 반환된 객체를 호출하는 모든 메소드는 슈퍼 클래스를 호출하는 메소드입니다. 요약: 하위 클래스와 하위 클래스 객체가 명시적으로 전달되고 생성자가 호출되지만 상위 클래스의 생성자는 암시적으로 실행됩니다.

위 내용은 Python의 생성자 메서드 분석(예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 博客园에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Python vs. C : 응용 및 사용 사례가 비교되었습니다Python vs. C : 응용 및 사용 사례가 비교되었습니다Apr 12, 2025 am 12:01 AM

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간의 파이썬 계획 : 현실적인 접근2 시간의 파이썬 계획 : 현실적인 접근Apr 11, 2025 am 12:04 AM

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

파이썬 : 기본 응용 프로그램 탐색파이썬 : 기본 응용 프로그램 탐색Apr 10, 2025 am 09:41 AM

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 ​​같은 작업에 적합합니다.

2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?Apr 09, 2025 pm 04:33 PM

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?Apr 02, 2025 am 07:15 AM

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까?Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까?Apr 02, 2025 am 07:12 AM

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

경치 좋은 스팟 코멘트 분석에서 Jieba Word 세분화의 정확성을 향상시키는 방법은 무엇입니까?경치 좋은 스팟 코멘트 분석에서 Jieba Word 세분화의 정확성을 향상시키는 방법은 무엇입니까?Apr 02, 2025 am 07:09 AM

경치 좋은 스팟 댓글 분석에서 Jieba Word 세분화 문제를 해결하는 방법은 무엇입니까? 경치가 좋은 스팟 댓글 및 분석을 수행 할 때 종종 Jieba Word 세분화 도구를 사용하여 텍스트를 처리합니다 ...

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경