> 백엔드 개발 > 파이썬 튜토리얼 > 객체 지향 심층

객체 지향 심층

高洛峰
풀어 주다: 2016-10-19 11:14:42
원래의
1175명이 탐색했습니다.

객체와 클래스의 기본 개념을 익히고 있습니다. 실제로 객체와 클래스를 사용할 수 있도록 더 확장하겠습니다.

호출 클래스 기타 안내

이전 강의에서도 언급했듯이 메소드 정의 시 self 매개변수가 반드시 포함되어야 합니다. 이 매개변수는 객체를 나타냅니다. 객체는 클래스의 모든 속성을 가지므로 self를 통해 클래스 속성을 호출할 수 있습니다.

class Human(object):
    laugh = 'hahahaha'
    def show_laugh(self):
        print self.laugh
    def laugh_100th(self):
        for i in range(100):
            self.show_laugh()
li_lei = Human()          
li_lei.laugh_100th()
로그인 후 복사

여기에는 클래스 속성인 웃음이 있습니다. show_laugh() 메소드에서 이 속성의 값은 self.laugh를 통해 호출됩니다.

다른 메소드도 같은 방법으로 호출할 수 있습니다. show_laugh(),() 메소드는augh_100th 메소드에서 호출됩니다.

객체를 통해 클래스 속성 값을 수정할 수 있습니다. 그러나 이것은 위험합니다. 클래스 속성은 동일한 클래스 및 해당 하위 클래스의 모든 객체에서 공유됩니다. 클래스 속성 값을 변경하면 모든 객체에 영향을 미칩니다.

__init__() 메서드

__init__()는 특별한 메서드입니다. Python에는 몇 가지 특별한 메서드가 있습니다. Python은 이들을 특별하게 취급합니다. 특수 메소드는 이름 앞뒤에 두 개의 밑줄이 있는 것이 특징입니다.

클래스에 __init__() 메서드를 정의하면 Python은 객체를 생성할 때 자동으로 이 메서드를 호출합니다. 이 프로세스를 초기화라고도 합니다.

class happyBird(Bird):
    def __init__(self,more_words):
        print 'We are happy birds.',more_words
summer = happyBird('Happy,Happy!')
로그인 후 복사

여기서 Bird 클래스를 상속받았는데, 그 정의는 이전 강의에서 보여드렸습니다.

화면에 인쇄:

We are happybirds.Happy,Happy!

방금 여름 객체를 생성했지만 __init__() 메서드는 자동으로 실행됩니다. 라고 불리는. 명령문의 마지막 줄(summer = happyBird...)은 먼저 객체를 생성한 다음 실행합니다.

summer.__init__(more_words)

'Happy,Happy!'가 __init__에 전달됩니다. () more_words의 매개변수

객체의 속성

우리는 많은 속성에 대해 이야기했지만 이러한 속성은 클래스의 속성입니다. 이 클래스에 속하는 모든 개체는 이러한 속성을 공유합니다. 예를 들어, 새는 모두 깃털이 있지만 닭은 날 수 없습니다.

어떤 경우에는 객체에 대한 특별한 정보를 기록하기 위해 객체의 속성을 정의합니다. 예를 들어, 인간 카테고리. 성별은 개인의 자산입니다. 모든 인간이 남성이거나 여성인 것은 아닙니다. 이 속성의 값은 개체마다 다릅니다. 리 레이(Li Lei)는 남성 성별을 지닌 인간 대상이고, 한메이메이(Han Meimei) 역시 여성 성별을 지닌 인간 대상이다.

클래스 메소드를 정의할 때 self 매개변수를 전달해야 합니다. 이 매개변수는 클래스의 객체를 참조합니다. self를 조작하여 객체의 속성을 수정할 수 있습니다. 예를 들어, 클래스를 사용하여 다음 예에서 li_lei라는 새 객체를 생성하는 경우 li_lei는 self로 표시됩니다. self.attribute에 값을 할당함으로써 우리는 남성 및 여성 성별과 같은 일부 속성을 객체 li_lei에 추가합니다. self는 각 메소드에 전달됩니다. 메서드 내에서 self.attribute를 참조하여 개체의 속성을 쿼리하거나 수정할 수 있습니다.

이와 같이 클래스 속성 외에도 각 개체에는 고유한 속성이 부여되므로 다양한 세계를 설명할 수 있습니다.

class Human(object):
    def __init__(self, input_gender):
        self.gender = input_gender
    def printGender(self):
        print self.gender
li_lei = Human('male') # 这里,'male'作为参数传递给__init__()方法的input_gender变量。
print li_lei.gender
li_lei.printGender()
로그인 후 복사

초기화 시 객체의 속성, 즉 self.gender에 input_gender 매개변수를 할당합니다.

li_lei에는 성별 개체 속성이 있습니다. 성별은 클래스 속성이 아닙니다. Python은 li_lei 객체를 생성한 후 li_lei.gender 객체 속성을 사용하여 li_lei 객체에 속하는 고유 정보를 구체적으로 저장합니다.

객체 속성은 다른 메서드에서도 호출할 수 있습니다. 호출 메서드는 printGender() 메서드의 호출과 마찬가지로 클래스 특성 호출과 유사합니다.

요약

self를 통한 클래스 속성 호출

__init__(): 객체 생성 시 자동으로 실행

클래스 속성과 객체의 성격의 차이


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