2017-11-02 2 views
0

저는 파이썬에서 인스턴스와 클래스 속성에 대해 배우려고합니다. 그럼 조금 혼란 스럽네요 : this_obj.var은 인스턴스 속성이거나 클래스 속성에 속합니다. 코드는 다음과 같습니다인스턴스 속성과 클래스 속성의 차이점

class Myclass (object): 
    var = 10 

this_obj = Myclass() 
this_obj.somevar = 12 
that_obj = Myclass() 
that_obj.somevar = 12 
+2

[Python : 클래스 및 인스턴스 속성의 차이점] 가능한 복제본 (https://stackoverflow.com/questions/207000/python-difference-between-class-and-instance-attributes) –

답변

2

인스턴스 및 클래스 속성은 처음에는 이해하기 어려울 수 있습니다. 그것에 대해 생각하는 가장 좋은 방법은 이름에주의하는 것입니다.

인스턴스 속성은 클래스의 특정 인스턴스에서 소유합니다. 즉, 이러한 속성은 특정 클래스의 인스턴스마다 다를 수 있습니다.

한편 클래스 속성은 클래스 자체가 소유하므로 속성은 특정 클래스의 각 인스턴스에 대해 동일한 값을 갖습니다.

예에서 var은 모든 인스턴스에 대한 클래스 속성이 MyClass입니다. 그러나 var이 지정된 인스턴스 (예 : this_obj.var = 69)에 대해 다른 값으로 설정되면 this_obj.varthis_obj 인스턴스에 대한 인스턴스 속성이됩니다. 의미, 인스턴스 속성은 모든 인스턴스의 클래스 속성을 변경할 때 만들어집니다.

희망 하시겠습니까?

EDIT : 클래스 속성 값 자체를 변경할 수도 있습니다. 즉, 특정 속성에 대한 인스턴스 속성이없는 모든 인스턴스에 대해 변경됩니다. 예를 들어 MyClass.var = 34은 인스턴스 속성을 아직 만들지 않은 모든 인스턴스 MyClass의 값을 변경합니다.

관련 문제