2016년 8월 27일 토요일

python variable, attribute(instance attribute, class attribute)

-- 정리 계기 --

python을 사용할 때 변수(variable) 이라는 말과 속성(attribute)이라는 말이 혼란스럽기도 했고, attribute를 알아보니 class, instance attribute 가 따로 있어 정리했습니다.
지금은 간단히 class 안에 있는 것은 attribute 이고 class 로 만든 새로운 instance는 variable 이라고 이해하고 있습니다.


-- 내용 --

variable:  우리가 일반적으로 이야기하는 변수, class 로 새로운 instance 를 생성하면 그것이 변수
attribute: class 내에서 만들어진 변수


attribute 세부
    1. instance attribute
    2. class attribute

Beyond performance considerations, there is a significant semantic difference. In the class attribute case, there is just one object referred to. In the instance-attribute-set-at-instantiation, there can be multiple objects referred to.
성능에 대한 이야기를 떠나서, 확실하게 다른점이 있다. class attribute는 1개의 object 밖에 없다. 초기화를 통해 만들어진 instance attribute눈 여러개의 object 가 만들어진다.

For instance
예를 들면 아래와 같다.

1. class attribute 
class A:
    foo = []
a, b = A(), A()
a.foo.append(5)
b.foo
[5]

-> class level 에서 작성, self.xxx 로 사용하지 않음


2. instance attribute
class C:
    def __init__(self):
        self.foo = []
c, d = C(), C()
c.foo.append(5)
d.foo
[]

-> instance level 에서 접근, self.xxx 로 사용

The difference is that the attribute on the class is shared by all instances. The attribute on an instance is unique to that instance.
class 의 attribute는 모든 instance 들이 공유하고, instance 의 attribute 는 각 attribute 마다 고유하다.



참조: Link







댓글 없음:

댓글 쓰기