앞서 배운 데이터 유형은 클래스이며, 클래스에서는 다양한 메서드를 사용할 수 있습니다.
클래스의 정의는 class 키워드를 사용하며 구문 구조는 다음과 같습니다.
className:''''클래스 문서'''콘텐츠
Name은 생성하려는 클래스의 이름입니다. 두 단어를 사용하여 이름을 지정할 경우 두 단어의 첫 글자를 대문자로 사용해야 한다는 점에 유의하세요.
클래스 문서는 이 클래스를 이해하는 데 도움을 주기 위해 작성된 정보입니다.
콘텐츠는 변수, 메서드, 속성 등을 포함하는 클래스의 클래스 본문 입니다. 클래스를 정의할 때 콘텐츠를 일시적으로 추가할 필요가 없으면 pass 문을 자리 표시자 문으로 사용할 수 있습니다.
클래스를 정의해 보겠습니다.
classSchool: #이 방법으로 School이라는 클래스를 정의합니다.'''학교 클래스 정의'''passschool=School()#이 방법으로 이 클래스를 호출합니다. print(type(school))#Pass 출력 해당 클래스를 살펴보세요. 활자인쇄(학교)
출력은 다음과 같습니다
<class'__main__.School'><__main__.Schoolobjectat0x03372DD8>
결과에서 school이 클래스임을 알 수 있고, 두 번째 줄에서 school이 School 클래스의 인스턴스임을 알 수 있습니다.
클래스를 생성할 때 __init__() 메서드가 생성되는 경우가 많습니다. 즉, 클래스가 호출될 때마다 이 메서드가 사용되며 이 메서드에 매개변수도 전달됩니다.
이 메서드는 첫 번째 매개 변수이기도 한 self 매개 변수를 포함해야 하며 이 매개 변수는 인스턴스 자체를 가리키며 이 클래스에 있는 속성과 메서드에 액세스할 수 있습니다.
다음 예를 살펴보십시오.
classSchool: #이 방법으로 클래스를 정의합니다. '''학교 클래스 정의''' def__init__(self):print('여기에 __init()__ 메서드가 있습니다.')def__judge__( self) :print('이 메소드가 호출되는지 판단합니다.')school=School()
출력은 다음과 같습니다
__init()__ 메소드는 다음과 같습니다.
출력에서 이 클래스가 호출되는 한 __init__ 메서드는 자동으로 호출되지만 다음 __judge__ 메서드는 호출되지 않음을 알 수 있습니다.
루프를 사용하여 이 클래스가 호출될 때마다 init 메서드가 사용되는지 확인할 수도 있습니다.
아래 코드를 보세요:
classSchool:'''학교 수업 정의'''count=0def__init__(self):School.count+=1print('이것은 __init()__ 메소드의 %d번째 사용입니다'%School.count)foriinrange(5 ): 학교()
출력은 다음과 같습니다
다음은 __init()__ 메서드의 첫 번째 사용입니다. 다음은 __init()__ 메서드의 세 번째 사용입니다. 메소드 다음은 __init()__ 메소드의 5번째 사용법입니다.
init 메소드를 5번 사용했다는 것을 출력에서 볼 수 있습니다. 이 클래스를 처음 호출하면 count가 0이 되고 init 메소드에 1이 추가됩니다. init 메소드의 school.count가 증가합니다. 1. 그러면 가장 바깥쪽 개수는 변경되지 않습니다. 이 예제를 통해 init 사용법을 배울 수 있습니다.
함수를 학습할 때 함수명에 매개변수 전달을 정의하고, 클래스에서는 init 메소드를 통해 보다 편리하게 매개변수를 전달할 수 있다.
다음 예를 살펴보십시오.
classGetAge:def__init__(self,name,age):self.name=nameself.age=ageprint('%s의 나이는 %d입니다.'%(name,age))GetAge('샤오밍',18)
출력은 다음과 같습니다
샤오밍의 나이는 18세
self는 필수적이며 먼저 배치되어야 한다는 점에 유의해야 합니다. 그런 다음 이 클래스를 호출할 때 init 메소드에 포함된 매개변수의 수(self 제외)는 우리가 호출하는 매개변수의 실제 수와 동일해야 합니다. 통과했다.