파이썬에서 클래스를 사용하는 방법은 아래와 같다.
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