greatsangho의 이야기

캠프 6일차 - 파이썬 클래스의 추가적인 구문 본문

프로그래밍/SK AI 캠프

캠프 6일차 - 파이썬 클래스의 추가적인 구문

greatsangho 2024. 8. 27. 19:01

클래스

 - 클래스 변수를 그냥 정의 후 사용할 때, 클래스 명과 클래스 변수만 사용

 - 인스턴스 변수는 self.변수명으로 선언, 사용할 때 객체.변수명으로 사용

 - 클래스 변수의 예

    - 객체 자체를 저장하기 위한 리스트, 객체가 생성될 때마다 증가시키는 변수

    - 클래스 함수

 - 인스턴스 변수가 사용되지 않는 로직은 굳이 객체로 만들어 사용할 필요가 없으므로 클래스 함수로 만듦

 - @classmathod를 선언하고 매개변수 cls 사용

 

변수 만들기

class ClassName:

    class변수 = 값

 

변수에 접근하기

ClassName.변수이름

 

클래스 함수 만들기

class ClassName:

    @classmethod --> 클래스가 가진 기능이라고 보여주는 데코레이터

    def 클래스 함수(cls, 매개변수):

        pass

 

클래스 함수 호출

ClassName.함수이름(매개변수)

class Calc:
  @classmethod # 클래스의 인스턴스 변수를 활용하지 않음, math.~
  def add(cls,x,y):
    return x + y

Calc.add(10,20)

 

isinstance(객체,클래스) : 객체가 클래스의 인스턴스 여부

 

특수한 이름의 메소드

 __init__ __str__

__eq__ __ne__ __gt__ __ge__ __lt__ __le__

 

클래스 변수와 메소드

 - 객체가 아닌 클래스로 접근

 - 크래스에 파생된 인스턴스는 모두 가능

 

private 변수

 - 변수이름 앞에 __변수이름의 형식으로 선언

 - 클래스 내부에서는 자유롭게 사용 가능하나 객체를 통해서는 접근 불허

 - getter, setter

class Student:
  def __init__(self, name="",age=1):
    self.name = name
    self.__age = age

  def setAge(self,age):
    if age > 0:
      self.__age = age
    else:
      print("나이는 0보다 커야 합니다")
      
  def getAge(self):
    return self.__age

 

 - @property와 @변수명.setter --> 외부에서 함수를 변수처럼 사용

# 데코레이터를 사용 -> 함수를 변수처럼 ()없이 사용
class Student:
  def __init__(self, name="",age=1):
    self.name = name
    self.__age = age

  @property # get함수의 역할
  def age(self):
    return self.__age

  @age.setter # setter의 역할
  def age(self,age):
    if age > 0:
      self.__age = age
    else:
      print("나이는 0보다 커야 합니다")
      # raise ValueError("나이는 0보다 커야 합니다")

 

상속

 - 기존 클래스들의 기능을 사용하면서 자체적으로 기능을 새롭게 부여
 - 부모클래스 + 알파
 - 부모클래스 확장

 - 파이썬에서는 다른 언어에서 금지된 다중상속이 가능함

 - 생성자에서 반드시 부모 생성자를 호출(변수 때문에)

 - 생성자에서 다른 생성자 생성 시 호출 가능

 - private 변수는 상속하지 않는다

 

상속을 이용해 사용자 정의 예외 클래스 만들기

# From0To100Error 만들기
class From0To100Error(Exception):
  def __str__(self) -> str:
    return "0과 100사이에 숫자만 가능합니다"

def checkInvalid(data):
  if data > 100 or data < 0:
    raise From0To100Error()

try:
  number = int(input("input >"))
  checkInvalid(number)
except From0To100Error as e:
  print("적절한 처리를 한다",e)
except Exception as e:
  print("사용자가 정의한 예외말고 그 밖의 모든 예외 발생시 처리",e)

 

그 외에도 나이에 따른 입장객 수 및 총 가격을 구하는 공원 입장료 프로그램을 만들었다.

 

https://github.com/greatsangho/python_study/blob/main/20240827_day_6.ipynb

 

python_study/20240827_day_6.ipynb at main · greatsangho/python_study

Contribute to greatsangho/python_study development by creating an account on GitHub.

github.com

반응형

'프로그래밍 > SK AI 캠프' 카테고리의 다른 글

캠프 8일차 - MySQL 설치  (3) 2024.08.30
캠프 7일차 - 파이썬 총정리  (2) 2024.08.30
캠프 5일차 - 파이썬 모듈, 클래스  (0) 2024.08.26
SKN AI 캠프 1주차  (0) 2024.08.23
캠프 4일차 - 함수와 예외  (0) 2024.08.23