[Python] 객체 지향 프로그래밍 - 추상화

seoryeong·2023년 8월 7일

Python

목록 보기
3/3
post-thumbnail

💐 객체 지향 프로그래밍 - 추상화(abstraction)

추상화(abstraction)란 불필요한 정보는 숨기고 중요한(필요한)정보만을
표현함으로써 공통의 속성 값이나 행위(methods)를 하나로 묶어 이름을 붙이는 것이다.

class Robot:

    population = 0 #클래스 변수 : 인스턴스들이 공유하는 변수

    def __init__(self, name, code):
        self.name = name #인스턴스 변수
        self.code = code #인스턴스 변수
        Robot.population +=1

    def say_hi(self):
        print(f"Greetings, my masters call me {self.name}")

    def cal_add(self,a,b):
        return a+b

    def die(self):
        print(f"{self.name} is being destroyed!")
        Robot.population -= 1

        if Robot.population == 0:
            print(f"{self.name} was the last one")

        else:
            print(f"There are still {Robot.population} robots working")

    #클래스 메서드
    @classmethod
    def how_many(cls): # self는 instance를 받고, cls는 class(Robot)를 받는다
        print(f"We have {cls.population} Robot ")


print(Robot.population) # 0

siri = Robot('siri',21039788127)
jarvis = Robot('jarvis',231124532)
bixby = Robot('bixby',23153211)
print(Robot.population) #3


print(siri.name) #siri
print(siri.code) #21039788127


siri.say_hi() #Greetings, my masters call me siri
print(siri.cal_add(2,3)) #5
Robot.how_many() #We have 3 Robot <Robot이 cls이다.>

Robot : class 공간
→ Class namespace에서 instance 각각들이 공유하는 변수와 메소드를 정의할 수 있다. (변수 = class 변수 / 메소드 = class 메소드)

profile
파이썬 개발자입니다.

1개의 댓글

comment-user-thumbnail
2023년 8월 7일

정보 감사합니다.

답글 달기