일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 로컬 런타임
- 파이썬
- Jupyterlab
- mifare
- 머신러닝
- Github
- sLLM
- lightsail
- Python
- ai캠프
- djangorestframework
- mysql
- streamlit
- 티스토리챌린지
- team_project
- finpilot
- pandas
- 오블완
- ollama
- aws
- ai 캠프
- conda
- ai_캠프
- 정치기 필기
- chromeextention
- django
- EC2
- ML
- pytorch
- seaborn
- Today
- Total
greatsangho의 이야기
캠프 6일차 - 파이썬 클래스의 추가적인 구문 본문
클래스
- 클래스 변수를 그냥 정의 후 사용할 때, 클래스 명과 클래스 변수만 사용
- 인스턴스 변수는 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 |