Python
Python 개념 및 실습 - 클래스(3)
developers developing
2022. 9. 11. 21:00
오버라이딩 : 부모클래스가 가지고 있는 메소드 재정의
class Parent:
def func1(self):
print("Parent func1()")
def func2(self):
print("Parent func2()")
class Child(Parent):
def func1(self):
print("Child func1()")
def func3(self):
print("Child func2()")
parent, child = Parent(), Child()
parent.func1()
child.func1()
parent.func2()
child.func2()
child.func3()
# Car ==> upspeed 오버라이딩
class Car:
speed = 0
def up_speed(self, value):
self.speed = self.speed + value
print("현재 속도(부모 클래스) : {}".format(self.speed))
def down_speed(self, value):
self.speed = self.speed - value
class Sedan(Car):
seatNum = 0
def up_speed(self, value):
self.speed = self.speed + value
# 재정의
# 현재 속도가 150보다 크면 현재 속도를 150으로 변경
if self.speed > 150:
self.speed = 150
print("현재 속도(자식 클래스) : {}".format(self.speed))
def getSeatNum(self):
return self.seatNum
class Truck(Car):
capacity = 0
def getCapacity(self):
return self.capacity
sedan1, truck1 = Sedan(), Truck()
sedan1.up_speed(200)
truck1.up_speed(80)
sedan1.seatNum = 5
truck1.capacity = 50
print("승용차의 속도는 {}km, 좌석수는 {}개".format(sedan1.speed, sedan1.getSeatNum()))
print("트럭의 속도는 {}km, 총 중량은 {}톤".format(truck1.speed, truck1.getCapacity()))

private 개념 : 키워드를 사용하진 않음.
# private : "__변수명" 기능
import math
class Circle:
def __init__(self, radius) -> None:
self.__radius = radius
def get_circumference(self):
return 2 * math.pi * self.__radius
def get_circle_area(self):
return math.pi * (self.__radius**2)
def get_radius(self):
return self.__radius
def set_radius(self, radius):
self.__radius = radius
circle = Circle(10)
print("둘레 ", circle.get_circumference())
print("면적 ", circle.get_circle_area())
# print("__radius", circle.__radius) #AttributeError: 'Circle' object has no attribute '__radius'
print("__radous", circle.get_radius())
circle.set_radius(5)
print("둘레 ", circle.get_circumference())
print("면적 ", circle.get_circle_area())
