Python - 클래스

이호현·2020년 7월 4일
0

Python

목록 보기
7/10

1. 클래스

클래스 선언

class Human:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        print('이름: {0}, 나이: {1}'.format(self.name, self.age))

2. 클래스 멤버

생성자

def __init__(self, name, age):

멤버 변수

객체 생성 후 객체 멤버로 정의된 변수에 접근 가능

hemtory = Human('햄토리', 10)
print(hemtory.name, hemtory.age)

# > 이름: 햄토리, 나이: 10
# > 햄토리 10

생성된 객체에 따로 멤버 변수 추가가능(그 객체에서만 사용가능)

hemtory.hobby = '먹기'
print(hemtory.hobby)

# > 먹기

메서드

-객체 내에서 사용가능한 함수(메서드 매개 변수에 self 꼭 사용)

멤버 변수 처럼 ' . '을 이용해 접근가능

class Human:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def active(self, something):
        print('{0}가 {1}를 합니다'.format(self.name, something))

hemtory = Human('햄토리', 10)
hemtory.active('식사')

# > 햄토리가 식사를 합니다

3. 상속

상속

-다른 클래스에 있는 속성들을 그대로 사용할 수 있음
-상속하는 클래스는 부모 클래스, 상속받는 클래스는 자식 클래스

class Human:
    def __init__(self, name, age):
        self.name = name
        self.age = age

class Student(Human):
    def __init__(self, name, age, sub):
        Human.__init__(self, name, age)
        self.sub = sub
        print('{0}는 {1} 과목을 잘합니다'.format(self.name, self.sub))

hemtory = Student('햄토리', 10, '수학')

# > 햄토리는 수학 과목을 잘합니다

다중 상속

-여러 부모 클래스로부터 상속 받는 것

class Human:
    def __init__(self, name, age):
        self.name = name
        self.age = age

class Hobby:
    def __init__(self, hobby):
        self.hobby = hobby

class Student(Human, Hobby):
    def __init__(self, name, age, sub, hobby):
        Human.__init__(self, name, age)
        Hobby.__init__(self, hobby)
        self.sub = sub
        self.hobby = hobby
        print('{0}는 {1}살이고 {2} 과목을 잘합니다'.format(self.name, self.age, self.sub))
        print('취미는 {0}입니다'.format(self.hobby))

hemtory = Student('햄토리', 10, '수학', '게임')

# > 햄토리는 10살이고 수학 과목을 잘합니다
# > 취미는 게임입니다

오버로딩

-자식 클래스에서 부모 클래스에서 정의된 메서드를 재정의해서 사용

class Human:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def active(self, something):
        print('{0}가 {1}를 합니다'.format(self.name, something))

class Student(Human):
    def __init__(self, name, age, sub):
        Human.__init__(self, name, age)
        self.sub = sub
    def active(self, something):
        print('{0}가 {1}를 하고, {2} 공부를 합니다'.format(self.name, something, self.sub))

hemtory = Student('햄토리', 10, '수학')
hemtory.active('식사')

# > 햄토리가 식사를 하고, 수학 공부를 합니다

pass

-무슨 작업을 할지는 아직 정하진 않았지만 일단 비워두고 넘어가겠다는 의미

class Student(Human):
    def __init__(self, name, age, sub):
        pass

# > 햄토리가 식사를 하고, 수학 공부를 합니다

super

# 상속 받을 때 부모 클래스.__init__ 대신 super().__init__사용가능
class Student(Human):
    def __init__(self, name, age, sub):
        Human.__init__(self, name, age)
        self.sub = sub


class Student(Human):
    def __init__(self, name, age, sub):
        super().__init__(self, name, age)
        self.sub = sub


# 다중 상속일 때에는 처음 상속받는 클래스에 대한 것만 적용됨
profile
평생 개발자로 살고싶습니다

0개의 댓글