2024.02.19
오늘 학습한 내용 : class에 대하여...
pass는 하나의 클래스, 함수, 조건문, 반복문등의 내용을 추후 정하고 다른 부분을 먼저 할때 넘어가기 위해 사용 즉, 비즈니스 로직의 전반적인 형식을 형성하기 위해 사용하는 경우가 많다.
비지니스 로직 : 구현하려는 로직을 의미 -> 클래스는 여러개의 비지니스 로직을 하나로 묶었다고 봐도 무방하다.
ex.
class Something():
def __init__(self):
pass
def something(self):
pass
class Bicycle():
# 생성자
def __init__(self,size,color,speed):
self.wheel_size = size
self.color = color
self.speed = speed
print("생성자 호출!")
def move(self):
print(f"속도는 {self.speed} 입니다.")
k = Bicycle(20,20,20)
k.move()
Result>
생성자 호출!
속도는 20 입니다.
class Car():
class_count = 0 # 클래스 변수 -> 클래스로 접근하면 객체와 상관없이 다 영향을 미친다.
def __init__(self,instance_count, speed):
self.instance_count = instance_count
self.speed = speed
def move(self):
Car.class_count = 20 # 클래스 변수는 클래스명.변수로 선언
return f"스피드 : {self.speed}, class_count : {Car.class_count}, instance_count : {self.instance_count}"
car = Car(10,5)
print(car.move())
Result>
스피드 : 5, class_count : 20, instance_count : 10
1. 정적 메소드(Static method)
#형태
@staticmethod
def 메소드명(인자1,인자2,...):
함수내용
#호출
클래스명.메소드명(인자1,..)
예제>
class Car():
@staticmethod
def check_type(model_code):
if(model_code >= 20):
print("이 자동차는 전기차입니다.")
elif(10<= model_code < 20):
print(" 이 자동차는 가솔린차입니다.")
else:
print(" 이 자동차는 디젤차입니다.")
Car.check_type(25)
Car.check_type(2)
Result
이 자동차는 전기차입니다.
이 자동차는 디젤차입니다.
2. 클래스 메소드(Class method)
#형태
@classmethod
def 메소드명(cls):
함수내용(cls.클래스변수~)
# 호출
클래스명.메소드명(인자1...)
예제>
class Car():
class_count = 0 # 클래스 변수 -> 클래스로 접근하면 객체와 상관없이 다 영향을 미친다.
def __init__(self):
self.instance_count = Car.class_count = Car.class_count + 1 # 객체를 호출할 때마다 클래스변수가 1씩 증가하여 증가
@classmethod
# 클래스안에서 클래스변수를 사용하려면 Car 이름으로 사용해야 하는데
# Car 이름 없이 사용하려는 목적
def count_increase(cls):
print(cls.class_count)
# 클래스 메소드의 함수호출
Car.count_increase()
# 인스턴스를 이용한 객체 생성 및 호출
k = Car()
k.count_increase()
super().__init__(부모생성자 인자1, 인자2, ...)
class Person():
def __init__(self,age,name):
self.age = age
self.name = name
print("부모 생성자")
def study(self):
pass
class Student(Person): # 상속할 부모 클래스 명을 자식 클래스()에 넣어준다 .
def __init__(self,age,name,score):
super().__init__(age, name) # 부모의 생성자 호출 --> 부모 클래스의 생성자 내용이 자식클래스 객체호출시 나와야한다.
self.score = score
print("student 생성자")
class Teacher(Person):
def __init__(self,age,name,students):
super().__init__(age, name)
print("teacher 생성자")
self.students = students
def teaching(self):
pass
s = Student(10, '홍길동', 80)
s.study()
s.age
t = Teacher(27,'이진수', '홍길동')
t.study()
t.students
Result>
부모 생성자
student 생성자
부모 생성자
teacher 생성자
홍길동