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)