Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

초보자를 위한 Python의 클래스 및 객체

오늘은 수업에 대해 알아보겠습니다. 아니요, 우리는 학교 수업을 의미하지 않습니다.

프로그래밍에서 클래스에는 고유한 정의가 있습니다. 클래스는 코더가 객체에 대해 생성한 청사진입니다. 객체에 저장할 수 있는 데이터와 특정 객체에 대해 수행할 수 있는 메서드를 정의합니다.

파이썬은 객체 지향 프로그래밍 언어입니다. 이것은 객체와 클래스가 데이터를 저장하는 데 사용되는 개발 패턴을 사용한다는 것을 의미합니다.

객체 지향 접근 방식은 코드의 반복을 줄이는 데 도움이 되므로 코드를 더 쉽게 읽고 유지 관리할 수 있습니다. 클래스와 객체는 Java, Python 및 C++와 같은 많은 프로그래밍 언어의 일부입니다.

이 가이드에서는 클래스가 무엇인지, 어떻게 작동하는지, 파이썬에서 클래스를 선언하는 방법에 대해 논의할 것입니다. 도움이 되도록 몇 가지 예를 살펴보겠습니다.

수업이란 무엇입니까?

클래스는 개체를 정의하는 데 사용하는 청사진입니다.

집의 청사진을 보고 있다고 상상해보십시오. 그 청사진은 문이 어디로 갈 것인지, 어디에 창문이 배치될 것인지 등을 설명할 것입니다. 프로그래밍 수업도 비슷합니다. 클래스는 개체에 저장할 수 있는 데이터에 대한 청사진을 제공합니다.

클래스는 class를 사용하여 정의됩니다. 예어. 두 가지 기능이 있는 Player라는 클래스를 정의하여 시작하겠습니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

클래스 플레이어:

""" This is a class for a player """
	name = "Luke"

	def wield_sword(self):
		print("You have wielded your sword.")

	def drink_health_potion(self):
		print("You have consumed a health potion.")

이 클래스는 비디오 게임의 플레이어를 나타냅니다. 여기에는 속성과 메서드가 모두 포함됩니다. 속성은 클래스 내부에 있을 때 종종 인스턴스 변수라고 합니다.

하나는 검을 휘두르는 것이고 다른 하나는 건강 물약을 마시는 것입니다. 클래스에는 이름이라는 하나의 클래스 변수가 있습니다. 이것은 플레이어의 기본 이름을 저장합니다.

self라는 단어를 사용하고 있습니다. 이 코드에서 몇 번. Self는 말 그대로 클래스 자체의 표현입니다. Self에는 특정 클래스에 저장된 모든 값이 포함되어 있으므로 메서드 내에서 모든 값에 액세스할 수 있습니다.

코드를 실행하면 아무 일도 일어나지 않습니다. 무슨 일이야? 클래스가 청사진이라고 우리가 말한 것을 기억하십니까? 아무 일도 일어나지 않는 이유입니다. 유용하게 사용하려면 청사진으로 뭔가를 해야 합니다.

개체란 무엇입니까?

객체는 클래스의 단일 인스턴스입니다. 클래스에서 생성한 청사진을 사용하여 정의됩니다.

게임에서 새로운 플레이어인 Luke를 위한 개체를 만들어 보겠습니다.

luke = Player()

우리는 방금 Luke라는 객체를 만들었습니다. 이제 객체는 클래스 내에 저장된 모든 데이터와 클래스와 관련된 메서드에 액세스할 수 있습니다.

luke = Player()
print(luke.name)
luke.wield_sword()

코드는 다음을 반환합니다.

루크

검을 휘두르셨습니다.

코드에서 name 값을 출력했습니다. Luke 객체의 속성입니다. 클래스의 속성에 액세스하려면 클래스 이름, 점, 액세스하려는 인스턴스 속성을 차례로 명시해야 합니다. 이것을 종종 dot notation이라고 합니다. .

기본적으로 name의 값은 Luke로 설정되었습니다. 잠시 후에 이것을 변경하는 방법에 대해 이야기하겠습니다.

wield_sword() 수업. 이 클래스를 호출했을 때 wield_sword()의 내용은 Player 클래스 내의 메소드가 실행되었습니다. 그 결과 콘솔에 "당신은 검을 휘두릅니다."라는 메시지가 인쇄되었습니다.

클래스의 객체는 원하는 만큼 선언할 수 있습니다. 이것이 클래스가 강력한 이유입니다. 여러 다른 개체에서 클래스 내에 저장된 동일한 메서드와 기본값을 재사용할 수 있습니다.

클래스 생성자

생성자를 사용하면 클래스 내부의 데이터를 초기화할 수 있습니다. 생성자 메서드는 특정 클래스의 개체를 선언한 직후에 실행됩니다.

생성자의 이름은 __init__()입니다. . 코드에서 이중 밑줄(__)이 있는 함수를 보는 데 익숙할 수 있습니다. 이러한 기능은 미리 정의된 목적이 있기 때문에 특수 기능이라고 합니다. 이 경우 __init__의 목적은 클래스를 초기화하는 것입니다.

클래스 맨 위에 이 메서드를 포함하도록 이전에 만든 Player 클래스를 업데이트합니다.

def __init__(self):
	print("Your character has been created.")

이 메서드는 클래스에 정의된 변수나 메서드보다 먼저 와야 합니다. 이전의 메인 코드를 다시 실행해 보겠습니다.

luke = Player()
print(luke.name)
luke.wield_sword()

코드는 다음을 반환합니다.

캐릭터가 생성되었습니다.

루크

검을 휘두르셨습니다.

__init__를 호출하지 않았습니다. 우리의 메인 프로그램에서 메소드를 실행했지만 어쨌든 실행되었습니다. 클래스의 객체를 생성할 때 생성자가 자동으로 실행되기 때문입니다.

이전에 name 값을 할당했습니다. Luke에 대한 우리 클래스의 변수. 이것은 플레이어를 Luke라고 부를 때 유용하지만 플레이어가 다른 이름을 가질 수 있다면 실용적이지 않습니다.

여기에서 생성자가 필요합니다. 플레이어에 이름을 할당할 수 있는 생성자를 만들어 보겠습니다.

class Player:
	def __init__(self, name):
		self.name = name

이 코드를 사용하면 매개변수를 각 Player 개체에 전달할 수 있습니다. 이 매개변수는 플레이어의 이름을 나타냅니다. 그런 다음 플레이어의 이름을 알려주는 메서드를 만듭니다.

class Player:
	def __init__(self, name):
		self.name = name

	def get_name(self):
		print("Your name is " + self.name)

Leah라는 플레이어를 위한 Player 클래스의 새 인스턴스를 생성해 보겠습니다.

leah = Player("Leah")
leah.get_name()

코드는 다음을 반환합니다.

당신의 이름은 레아입니다.

name 값을 할당했습니다. Leah에 대한 우리 객체의 변수. 이것은 우리가 수업에서 그것을 참조하는 곳마다 그 값이 Leah라는 것을 의미합니다. 생성자는 클래스의 객체를 생성하자마자 실행되므로 호출에 대해 걱정할 필요가 없습니다.

그런 다음 get_name() 메서드를 호출합니다. 플레이어와 관련된 이름을 출력합니다.

클래스에 원하는 만큼 매개변수를 추가할 수 있습니다.

class Player:
	def __init__(self, name, player_type):
		self.name = name
		self.player_type = player_type

	def get_name(self):
		print("Your name is " + self.name)

	def get_player_type(self):
		print(self.name + " is a " + self.player_type + ".")

이 예에서 Player 클래스는 두 개의 매개변수를 지원합니다. 하나는 플레이어의 이름(이름)을 나타내고 다른 하나는 해당 플레이어의 유형(player_type ). 이 클래스의 객체를 생성해 보겠습니다.

leah = Player("Leah", "Mage")
leah.get_name()
leah.get_player_type()

코드는 다음을 반환합니다.

당신의 이름은 레아입니다.

레아는 마법사입니다.

우리가 지정한 초기 값은 모두 우리 클래스에서 액세스할 수 있습니다.

결론

클래스를 사용하면 코드의 반복을 줄일 수 있습니다. 클래스를 정의한 후에는 해당 구조를 사용하여 원하는 만큼 객체를 정의할 수 있습니다. 반복 감소의 결과로 코드를 더 읽기 쉽고 유지 관리하기 쉬워야 합니다.

이제 전문가처럼 자신만의 Python 클래스를 작성할 준비가 되었습니다!