객체와 클래스의 기본 개념을 익히고 있습니다. 실제로 객체와 클래스를 사용할 수 있도록 더 확장하겠습니다.
호출 클래스 기타 안내
이전 강의에서도 언급했듯이 메소드 정의 시 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__(): 객체 생성 시 자동으로 실행
클래스 속성과 객체의 성격의 차이