>>> class Foo:
... def __init__(self):
... self.a = "a"
...
>>>
>>> f = Foo()
>>> f.a
'a'
>>> Foo.a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'Foo' has no attribute 'a'
>>>
>>> class Foo:
... a = "a"
...
>>>
>>> Foo.a # 클래스로 속성 'a'에 접근
'a'
>>> f = Foo()
>>> f.a # 인스턴스(self)로 속성 'a'에 접근
'a'
>>>
>>> f.__dict__
{}
>>> Foo.__dict__
mappingproxy({'__module__': '__main__', 'a': 'a', '__dict__': <attribute '__dict__' of 'Foo' objects>, '__weakref__': <attribute '__weakref__' of 'Foo' objects>, '__doc__': None})
>>>
속성, 메서드 이름을 찾는 순서
인스턴스 > 클래스 순
????
class IAmClass:
def __init__(self):
self.a = 1
@staticmethod
def i_am_method(para1, para2): # 파라미터에 "self"가 없어요!
pass
순수 함수 (pure functino)
순수 함수는 부수 효과(side effect)가 없고 입력 값이 같으며 언제나 같은 출력값을 반환
class IAmClass:
count = 0
def __init__(self):
self.a = 1
@classmethod
def i_am_method(cls, para1, para2): # 파라미테어 cls가 있어요!!
print(cls.count)