본문 바로가기
[파이썬]/클래스

[파이썬] 클래스

by sung min_Kim 2023. 11. 9.

 

클래스, class


템플릿 또는 설계도



· 클래스

 
 클래스는 일종의 템플릿 또는 설계도로 생각할 수 있다.

 예를 들어, '자동차'라는 클래스를 만들 수 있고, 이 클래스에는 '색상', '브랜드', '모델' 등과 같은 속성과 '달리기', '정지', '가속' 등과 같은 메소드(행동)을 정의할 수 있다.

 이 템플릿을 기반으로 실제 '자동차' 객체를 만들 수 있다. 이렇게 만들어진 각 객체를 클래스의 인스턴스라고 한다.


· 기본 형태

 

class class_name:
	def __init__(self, attribute):
    	self.attribute = attribute

	def method(self, parameter):
    	print(f"안녕하세요, 저의 속성은 {self.attribute}입니다.")

 

  • class : 클래스를 정의한다.

  • class_name : 클래스의 이름이다. 클래스 이름의 첫 글자는 대문자로 작성한다.

  • __init__메소드 : 파이썬 클래스의 생성자이다. 인스턴스의 초기 상태를 설정한다. 

  • self : 클래스의 인스턴스를 참조한다. 이를 통해 인스턴스의 속성과 메소드에 접근할 수 있다.

  • attribute : 클래스의 속성이다. 속성은 클래스의 인스턴스가 가지는 데이터를 나타낸다.

  • method : 클래스의 메소드이다. 메소드는 클래스의 인스턴스가 수행할 수 있는 행동을 나타내며, 클래스 내부에 정의된 함수이다.

 


· 동작 원리

 

  1.  클래스를 정의하여 객체를 생성하기 위한 메소드와 속성을 지정한다.

  2. __init__ 메소드를 사용하여 인스턴스의 초기 상태를 설정한다.
    즉, 인스턴스가 생성될 때 어떤 속성을 가질지, 그 속성들의 초기 값을 어떻게 설정할지 등을 정의한다.

  3. self 키워드를 통해 __init__ 메소드를 자동으로 호출하여, 인스턴스의 속성에 접근하거나 메소드를 호출한다.

class My_self:
  def __init__(self, name, age):
    self.name = name
    self.age = age
  
  def introduce(self):
    print(f"안녕하세요, 저의 이름은 {self.name}이고, 나이는 {self.age}입니다.")
    
me = My_self('sungmin', '20') # me 변수는 'sungmin'이라는 인스턴스를 참조하는 변수이다.
                              ## 이 변수를 통해 'sungmin' 인스턴스에 접근할 수 있다.
me.introduce() # 안녕하세요, 저의 이름은 sungmin이고, 나이는 20입니다. 출력


 위의 코드에서 __init__ 메소드는 'name'과 'age'라는 두 개의 매개변수를 받는다.
 이 메소드가 호출되면, 이 매개변수들의 값이 각 각 인스턴스의 'name'과 'age' 속성에 저장된다.

 My_self('sungmin', '20)을 통해 'My_self' 클래스의 인스턴스를 생성하면, __init__ 메소드가 자동으로 호출되어 'sungmin' 과 '20'이 각 각 'name'과 'age' 속성에 저장된다.

 만약 __init__ 메소드를 사용하지 않는다면, 클래스의 인스턴스를 생성할 때 초기 상태를 설정하지 못한다는 문제가 발생할 수 있다. 

class My_self:
  def introduce(self):
    print(f"안녕하세요, 저의 이름은 {self.name}이고, 나이는 {self.age}입니다.")
    
me = My_self() 
me.introduce() # AttributeError 오류 발생


 My_self 객체에는 'name'이라는 속성이 없다는 AttributeError 오류가 발생하게 된다.
 이는 My_self 클래스가 __init__ 메소드를 통해 'name'과 'age' 속성의 초기 상태를 설정하지 않았기 때문이다.

 따라서, __init__ 메소드는 클래스의 인스턴스가 생성될 때 인스턴스의 초기 상태를 설정하는 데 매우 중요한 역할을 수행한다.




클래스에 대해 알아보았다.

클래스가 가지는 속성과 메소드(행동)을 통해 클래스가 정의하는 여러 객체를 생성할 수 있었다.

여러 개체(클래스의 인스턴스)를 생성하기도 편리하였고, 코드의 가독성이 좋아 흐름을 이해하기 좋았다.