AI/Python

Python Class 기초

Urong 2020. 12. 18. 14:52
728x90

프로그램언어를 다루면 클래스를 대부분 사용한다. 

Python에서의 클래스 사용법을 간단하게 연습해 보았다.

 

#Class 클래스
class Pet:  # 클래스 선언(클래스명은 대문자로 시작)
    color = ""
    kind = "dog"
    character = "home_grown"
    strength = 100

    def walk(self, do):
        self.strength = self.strength - do

    def eat(self, do):
        self.strength = self.strength + do

    def sleep(self, do):
        self.strength = self.strength + do

poodle = Pet()

poodle.color = 'brown'
poodle.walk(15)

print(poodle.color)
print(poodle.strength)

siam = Pet()
siam.kind = 'cat'

print(siam.kind)

class Pet2:  # 클래스 선언(클래스명은 대문자로 시작)
    def __init__(self, color, kind, character): #<-생성자
        self.color = color
        self.kind = kind
        self.character = character
        self.strength = 100
    color = ""
    kind = "dog"
    character = "home_grown"
    strength = 100

    def walk(self, do):
        self.strength = self.strength - do

    def eat(self, do):
        self.strength = self.strength + do

    def sleep(self, do):
        self.strength = self.strength + do

poodle2 = Pet2('brown', 'dog', 'active')
siam2 = Pet2('white', 'cat', 'quietly')

print(poodle2.color)
poodle2.walk(15)
print(poodle2.strength)

siam2.eat(20)
print(siam2.strength)

#클래스 상속(Inheritance) Pet2클래스의 변수 및 메소드를 사용한다.
class Animal(Pet2):
    def walk(self, do): #메소드 오버라이드
        if self.strength <= 0:
            print("체력이 없습니다.")
        else:
            self.strength = self.strength - do


simba = Animal("yellow", "tiger", "active")
simba.walk(100)
print(simba.strength)
simba.walk(100)
print(simba.strength)

#사칙연산 계산기
class Calcul:
    def __init__(self, fr, se):
        self.fr = fr
        self.se = se
    def hap(self):
        result = self.fr + self.se
        return result
    def cha(self):
        result = self.fr - self.se
        return result
    def gob(self):
        result = self.fr * self.se
        return result
    def div(self):
        result = self.fr / self.se
        return result

cal1 = Calcul(6,8)
print(cal1.hap())

cal2 = Calcul(5,2)
print(cal2.div())

여기서 의문은 클래서 생성자사용시에 이 self

상속받은 클래스의 변수를 사용하려면

self.변수명 = 변수명

이걸 하는 이유를 모르겠다. 어디 누가 설명 좀 시원하게 해줬으면 좋겠다.

단순히 선언하는거 같은데 생성자에 포함시켜버리면 안되는 것이었던가...

728x90
반응형