2020년 5월 5일 화요일

Pyrhon Basic - Class

Self, 클래스 변수, 인스턴스 변수

클래스의 네이밍의 첫 글자는 대문자로 설정해 놓는다.
보통은 속성과 메소드

속성: 이름 나이 성별 주소 전화번호
메소드 : 걷다 뛰다 - 움직이 있는 것이다. - action

클래스를 활용시에는 반드시 초기화 선언을 해야한다.
def __init__(self):

클래스/인스턴스 차이를 이해하는 것이 중요
네임스페이스 : 객체를 인스턴스화 할 때 저장된 공간 - (ex 이름, 나이, 주소)

  • 클래스 변수 : 직접 사용 가능하며 객체보다 먼저 생성이 된다.
  • 인스턴스 변수 : 객체마다 별도로 존재하며 인스턴스 생성 후 사용한다.
인스턴스 네임스페이스에 변수가 없으면 클래스 네임스페이스에서 값을 찾는다. 거기에도 없다면 오류가 발생한다.

상속, 다중 상속

슈퍼클래스(부모) 및 서브클래스(자식) -> 모든 속성, 메소드 사용이 가능하다
슈퍼클래스(부모) - 중복되는 속성

코드 작성법

class Car:
    """"Parent Class"""
    def __init__(selftpcolor):
        self.type = tp
        self.color = color

    def show(self):
        return 'Car Class "Show Method"'

class BMWCar(Car):
    """Sub Class"""
    def __init__(selfcar_nametpcolor):
        super().__init__(tp,color)
        self.car_name = car_name
    
    def show_model(self) -> None:
        return "Your Car Name: %s" %self.car_name

class BenzCar(Car):
    """Sub Class"""
    def __init__(selfcar_nametpcolor):
        super().__init__(tp,color)
        self.car_name = car_name

    def show_model(self) -> None:
        return "Your Car Name: %s" %self.car_name

    def show(self):
        print(super().show())
        return 'Car Info: %s %s %s' %(self.car_name, self.type, self.color)

일반 사용방법

model1 = BMWCar('520d''sedan''red')

print(model1.color) # Super, 부모에서 가져온 값
print(model1.type)
print(model1.car_name) # Sub, 자식에서 가져온 값
print(model1.show()) # Super, 부모에서 가져온 값
print(model1.show_model())
print(model1.__dict__)

# Method Overriding(오버라이딩) - 올라타다? - 부모에 있는 값을 모두 사용하지 않고 
필요에 따라 개선 또는 추가 내 목적에 맞게 재구성하는 방법
model2 = BenzCar("220d"'suv'"black")
print(model2.show())
        
print()
# Parent Method Call
model3 = BenzCar("350s""sedan"'silver')
print(model3.show())

상속정보를 파악할때 사용되는 소스 코드 = (mro)

print(BMWCar.mro())
print(BenzCar.mro())

파이썬에서는 다중상속(Class)이 가능하다

댓글 없음:

댓글 쓰기