Coding/Python

[코뮤니티] 클래스의 상속, 메소드 오버라이딩(Overriding)

폴밴 2021. 9. 30. 11:40

클래스 상속

  • 어떤 클래스를 만들 때, 기능을 이어(상속)받는것.
  • 클래스를 상속하는 방법pass
  • class 자식클래스(부모클래스):
  • 상속해주는 클래스 : 부모클래스, 상속받는 클래스 : 자식클래스
# 부모클래스
class Calculator():
    def __init__(self, first, second):
        self.first = first
        self.second = second
    def add(self):
        result = self.first + self.second
        return result
    def subtract(self):
        result = self.first - self.second
        return result
    def multiply(self):
        result = self.first * self.second
        return result
    def divide(self):
        result = self.first / self.second
        return result

# 자식클래스 Perfectcal
class Perfectcal(Calculator):
    def modulo(self):
        result = self.first % self.second
        return result

b = Perfectcal(6,3)

print(b.modulo())  # 6 / 3 = 2, 나머지 0 -> 0
  • 생성자(init)를 자식클래스에 따로 작성하지 않아도 파이썬 내부적으로 부모클래스의 생성자를 불러온다.
  • 자식 클래스에서 생성자에 따로 하는 작업이 있을 경우 super()를 통해 부모클래스의 생성자를 불러올 수 있다.super()init( )
  • def init( ):

메소드 오버라이딩 (Method Overriding)

  • 부모클래스의 메소드를 가져와 수정하고 덮어쓴다.
class Calculator():
    def __init__(self, first, second):
        self.first = first
        self.second = second
    def add(self):
        result = self.first + self.second
        return result
    def subtract(self):
        result = self.first - self.second
        return result
    def multiply(self):
        result = self.first * self.second
        return result
    def divide(self):
        result = self.first / self.second
        return result

class Perfectcal(Calculator):
    def modulo(self):
        result = self.first % self.second
        return result
    def divide(self):  # divide method override
        result = self.first // self.second
        return result

a = Calculator(13,3)
b = Perfectcal(13,3)

print(a.divide())  # 4.333333333333333
print(b.divide())  # 4

클래스 변수

  • 객체 변수는 독립적으로 값을 유지하고 다른 객체의 영향을 받지 않는다.
  • 반면에 클래스 변수는 클래스로 만든 모든 객체에 공유된다.
  • 객체들이 클래스 변수를 공유한다.
class Food:
    favorite = "치킨"

a = Food()
b = Food()

print(a.favorite, b.favorite)  # 치킨 치킨

# 값 바꾸기
Food.favorite = "피자"

print(a.favorite, b.favorite)  # 피자 피자

c = Food()
d = Food()

print(c.favorite, d.favorite)  # 피자 피자

# 메모리값 = 1988956230256
print(id(a.favorite))
print(id(b.favorite))
print(id(c.favorite))
print(id(d.favorite))
  • 공유된 객체는 모두 같은 데이터 값을 갖는다.

 

Source

코딩 커뮤니티 - 코뮤니티 [파이썬/C언어/자바/웹,앱개발/독학]

 

코딩 커뮤니티 - 코뮤니티 [파이썬/... : 네이버 카페

코뮤니티 [코딩공부/독학/스터디/대외활동] : python, C언어, java, 자바스크립트, HTML, CSS, 웹/앱개발

cafe.naver.com