본문 바로가기
파이썬

파이썬 클래스 속성과 인스턴스 속성의 차이점은 무엇입니까?

by º기록 2020. 12. 27.
반응형

다음 사이에 의미있는 차이가 있습니까?

class A(object):
    foo = 5   # some default value

class B(object):
    def __init__(self, foo=5):
        self.foo = foo

많은 인스턴스를 만드는 경우 두 스타일의 성능 또는 공간 요구 사항에 차이가 있습니까? 코드를 읽을 때 두 스타일의 의미가 크게 다르다고 생각하십니까?

 

해결 방법

 

성능 고려 사항 외에도 큰 의미 적 차이가 있습니다. 클래스 속성의 경우 참조되는 객체는 하나뿐입니다. instance-attribute-set-at-instantiation에는 여러 개체가 참조 될 수 있습니다. 예를 들어

>>> class A: foo = []
>>> a, b = A(), A()
>>> a.foo.append(5)
>>> b.foo
[5]
>>> class A:
...  def __init__(self): self.foo = []
>>> a, b = A(), A()
>>> a.foo.append(5)
>>> b.foo    
[]

 

참조 페이지 https://stackoverflow.com/questions/207000

 

 

반응형

댓글