이 부분이 좀 어색했음.
클래스의 멤버 변수에 뭔가 추가를 하면, 그 클래스의 객체들의 변수에도 바로 뭔가가 추가됨.
근데 그러면 객체끼리 멤버 변수의 값이 다 똑같아지는거 아닌가?
그럴리가 없을텐데
가 아니고~ add_class_attr() 함수가 클래스의 멤버 변수에 특정 값을 추가하는거라 그런거임.
여기서 얻어갈거는, 클래스 멤버에 직접 접근을해서 추가를 하면, 객체 변수와도 그대로 공유가 된다는 것.
아니 처음 말이 맞나본데? 뭐야 이거
파이썬은 여러 객체가 클래스의 속성을 공유한대.
뭐야 이거 이상한데
아 이해했당.
기본적으로 클래스 자체의 멤버 변수도 있고, 객체 자체의 멤버 변수도 있어.
그런데 클래스에도 멤버 변수가 있고, 객체 자체에도 멤버 변수가 있으면, 객체의 멤버 변수가 이겨.
각 객체에 멤버 변수가 없으면? 클래스의 멤버 변수를 공유하게 되고.
이 때, 클래스가 한번 틀로 붕어빵 찍어냈다고 끝난게 아니라, 클래스의 변수가 수정되면 객체도 바로 따라 바뀌어.
아마 link로 가리키게 되어있나봐.
하여간
def __init__(self):
self.class_attr = []
이 초기화자를 클래스의 메소드로 추가시켜주면, 각 객체에도 멤버 변수가 생겨서, 객체끼리 멤버 변수를 공유하지 않을 수 있는거야.
지금 생각해보니까 자바도 이랬던거같음. ㅋㅋㅋ
똑같네.
최근댓글