Python/초심자를 위한 빅데이터 분석 및 머신러닝 응용과정
[easyupclass] 초심자를 위한 빅데이터 분석 및 머신러닝 응용과정(파이썬) 15강 - 클래스, 상속 2
김초송
2022. 10. 24. 22:24
super ()
- 슈퍼 클래스에서 사용된 함수의 코드를 받아서 서브 클래스에서 재사용할 수 있게 선언
class SubClass(SuperClass):
def __init__(self, parameter):
#슈퍼 클래스 __init__ 호출
super().__init__(parameter)
다중 상속
- 여러 개의 슈퍼 클래스를 상속 받음
- 상속 순서는 왼 > 오 > Object (Object 클래스는 항상 최상위 슈퍼 클래스)
class SubClass(SuperClass1, SuperClass2):
getter , setter
- 객체 내부 변수에 접근할 때, 특정 로직을 거쳐 접근시킴
- 제약 조건을 만들어서 접근 가능 여부 만들 때 사용
- python은 mangling을 더 많이 사용
- 변수를 생성/변경하려면 getter, setter를 통해서만
- getter: 생성
- setter: 변경
class User:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
def setter(self, first_name):
if len(first_name) >= 2:
self.first_name = first_name
else:
print("error")
def getter(self):
return self.first_name[0].Upper() + self.first_name[1:].lower() +" "+ self.last_name[0].Upper() + self.last_name[1:].lower()
# name 변수를 실행할 때 getter와 setter를 이용해야 작동한다고 선언
name = property(getter, setter)
- User 객체를 만들면 name 변수로 접근 가능
is a , has a
- is a : 상속을 이용해서 클래스 생성 (앞에서 배운 상속)
- has a : 객체를 가지고 클래스 생성
# Is a
class User:
def __init__(self, name, email):
self.name = name
self.email = email
class Id(User):
def info (self):
print(self.name, self.email)
# Has a
class Name:
def __init__(self, name):
self.name_ori = name
class Email:
def __init__(self, email):
self.email_ori = email
class Id:
def __init__(self, name_obj, email_obj):
self.name = name_obj
self.email = email_obj
def info(self):
print(name.name_ori, email.email_ori)