[python] 클래스

파이썬에서 클래스를 사용하는 방법은 아래와 같다.

class Person:
    count = 0 # static class variable
 
    # initialize method
    def __init__(self, name, age):
        self.name = name # instance variable
        self.age = age   # instance variable
        Person.count += 1
 
    # instance method
    def get_name(self):
        return self.name
 
    # instance method
    def get_age(self):
        return self.age
 
    # static method
    @staticmethod
    def get_count():
        return Person.count
 
    # class method
    @classmethod
    def new_instance(cls, name, age):
        return cls(name=name, age=age)
 
class AniPerson(Person): # class inheritance
    def __init__(self, name, age):
        super().__init__(name, age)
 
p1 = Person(name="홍길동", age=27)
p2 = Person(name="임꺽정", age=33)
p3 = Person.new_instance(name="장보고", age=38)
ap1 = AniPerson.new_instance(name="마루치", age=12)
 
print("count:", Person.get_count()) # count: 4
print("p3 name:", p3.get_name())    # p3 name: 장보고
print("p3 age:", p3.get_age())      # p3 age: 38
print("p3 type:", type(p3))         # p3 type: 
print(isinstance(p3, Person))       # True
print("ap1 name:", ap1.get_name())  # ap1 name: 마루치
print(isinstance(ap1, Person))      # True

추상클래스를 만들기 위해서는 ABCMeta 클래스를 상속해야 한다. 추상클래스의 추상메서드를 만들기 위해서는 @abstractmethod 데코레이터를 붙이면 된다.

from abc import *

# abstract class
class AbsPerson(metaclass = ABCMeta):
    @abstractmethod
    def get_name(self):
        pass

    @abstractmethod
    def get_age(self):
        pass

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

    def get_name(self):
        return  self.name

    def get_age(self):
        return self.age

p = Person(name="홍길동", age=27)
print(p.get_name()) # 홍길동
print(p.get_age())  # 27

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.