class FourCal:

    def __init__(self, first, second):	#생성자
      self.first = first
      self.second = second
      
    def add(self):
      result = self.first + self.second
      return result
    
>>> a = Fourcal(3, 4)
>>> a.first			# 3
>>> a.second		# 4
>>> a.add()		# 7

 

● 클래스 변수와 인스턴스 변수

class Account:
    num_accounts = 0		# 클래스 변수

    def __init__(self, name):		# 생성자
      self.name = name		# 인스턴스 변수
      Account.num_accounts += 1
      
    def __del__(self):			# 소멸자
      Account.num_accounts -= 1
    
>>> kim = Account('SamKim')
>>> lee = Account('CoLee')
>>> kim.name		# SamKim
>>> lee.name		# CoLee

>>> Account.new_accounts		# 2
>>> del kim
>>> Account.new_accounts		# 1

 

● 클래스 메서드와 인스턴스 메서드

class SelfTest:

    def function1():			# 클래스 메서드
        print('class method called!!')
        
    def function2(self):		# 인스턴스 메서드
        print('instance method called!!')
        
>>> self_test = SelfTest()
>>> self_test.function1()		# X
>>> SelfTest.function1()		# O (클래스 메서드)
>>> self_test.function2()		# O (인스턴스 메서드)
            ↕
>>> SelfTest.function2(self_test)

→ 메서드의 첫 매개변수에 각 인스턴스를 나타내는 self가 있으면 인스턴스 메서드, 없으면 클래스 메서드

 

class SelfTest:

    @classmethod
    def function1(cls):		# 클래스 메서드
        print('class method called!!')

→ decorator를 사용하여 클래스 메서드를 만드는게 일반적

→ 첫 매개변수로 self와 마찬가지로 cls를 주며 각 클래스를 나타냄

 

 

매직 메서드(스페셜 메서드)

 __init__ : 생성자

 __del__ : 소멸자

 __dict__ : 객체의 속성값 출력

class UserInfo():
    def __init__(self, name):
        self.name = name

>>> user1 = UserInfo('minsu')
>>> print(user1.__dict__)		# {'name' : 'minsu'}

cf) dir(객체) : 파이썬이 내장한 속성까지 볼수있음 (속성만 보여주고 값은 보여주지 않음)

 

● __doc__ : 클래스 주석(설명) 출력 

class UserInfo():
    """
    class comment
    """
>>> user1 = UserInfo()
>>> print(user1.__doc__)		# class comment

 

● __str__ : 문자열 출력 (=toString() in Java)

 

 

 

 

 

 

'Langauge > Python' 카테고리의 다른 글

PEP8 (Python Enhancement Proposal 8)  (0) 2020.12.22
*args, **kwargs  (0) 2020.12.21
Python 함수 (function)  (0) 2020.12.06
Python 기본문법  (0) 2020.12.06
자료형  (0) 2020.12.02

+ Recent posts