질의응답 게시판
클래스 변수부분에 헷갈리는게 있어서 질문해봅니다.
보통 함수와 전역변수에 대해서 설명할때
result = 0
def add(num):
result+=num
return result
이렇게 만들면 함수안의 result는
함수밖의 전역변수 result와 다르기 때문에
연산후 할당부분에서 에러가 나게 된다고 하지않습니까?
클래스를 처음배우게 될때 이패턴과 유사한 패턴을 보게되는게
class Cal:
result = 3
def add(self,num):
result += num
return result
이렇게 클래스변수 result는 메서드안의 result와 다르기
때문에 역시 연산후할당부분에서 에러가 나게되겠죠
근데 여기서 헷갈리는게
class Cal:
def set(self,num):
self.result = num
def add(self,num):
self.result += num
return self.result
이렇게 객체변수를 생성하면 서로 다른 메서드에서 객체변수를 변경시킬수 있는게 잘 와닿지가 않네요.
객체변수는 클래스 안 어디서든 자동으로 global 처리가
되는건가요?
변수는 전역변수와 지역변수 2가지만 있다는
느낌을 가지고 있다가 객체변수를 보게되니까
왠지 헷갈리는 느낌이드네요
책을 처음읽었을때는 대충넘어가서 헷갈리는지도 몰랐는데
두번째 읽다보니까 헷갈린다는걸 알게됬습니다