https://wikidocs.net/16071

 

41. class 정리 - 클래스 기본적인 사용

## 1. 클래스 개요 - 클래스는 객체의 구조와 행동을 정의합니다. - 객체의 클래스는 초기화를 통해 제어합니다. - 클래스는 복잡한 문제를 다루기 쉽도록 만듭니다. ...

wikidocs.net

 

 

https://wikidocs.net/16072

 

42. class 정리 - 클래스 속성과 인스턴스 속성

## 1. 클래스 속성과 인스턴스 속성의 차이 - 앞서 포스팅 [Python(파이썬) 기본 - 41. class 정리](https://suwoni-codelab.com/p ...

wikidocs.net

이 부분이 좀 어색했음.

클래스의 멤버 변수에 뭔가 추가를 하면, 그 클래스의 객체들의 변수에도 바로 뭔가가 추가됨.

근데 그러면 객체끼리 멤버 변수의 값이 다 똑같아지는거 아닌가?

그럴리가 없을텐데

 

가 아니고~ add_class_attr() 함수가 클래스의 멤버 변수에 특정 값을 추가하는거라 그런거임.

여기서 얻어갈거는, 클래스 멤버에 직접 접근을해서 추가를 하면, 객체 변수와도 그대로 공유가 된다는 것.

 

아니 처음 말이 맞나본데? 뭐야 이거

 

파이썬은 여러 객체가 클래스의 속성을 공유한대.

뭐야 이거 이상한데

 

 

아 이해했당.

 

기본적으로 클래스 자체의 멤버 변수도 있고, 객체 자체의 멤버 변수도 있어.

그런데 클래스에도 멤버 변수가 있고, 객체 자체에도 멤버 변수가 있으면, 객체의 멤버 변수가 이겨.

각 객체에 멤버 변수가 없으면? 클래스의 멤버 변수를 공유하게 되고.

이 때, 클래스가 한번 틀로 붕어빵 찍어냈다고 끝난게 아니라, 클래스의 변수가 수정되면 객체도 바로 따라 바뀌어.

아마 link로 가리키게 되어있나봐.

 

하여간

def __init__(self):

    self.class_attr = []

 

이 초기화자를 클래스의 메소드로 추가시켜주면, 각 객체에도 멤버 변수가 생겨서, 객체끼리 멤버 변수를 공유하지 않을 수 있는거야.

지금 생각해보니까 자바도 이랬던거같음. ㅋㅋㅋ

똑같네.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기