본문 바로가기

개발/Python

class, function, object, instance, parameter, variable

#클래스 정의
class 사람():
    def 함수1 (self, 파라미터):
        self.인스턴스변수 = 파라미터
        print(self.인스턴스변수)

    def 함수2 (self):
        print(self.인스턴스변수)

#클래스 인스턴스 생성
jake = 사람()

#클래스 인스턴스의 메서드 2개 호출 & 인스턴스 변수 출력
jake.함수1("지금 넘겨주는 파라미터는 인스턴스 변수가 되서 다른 메서드에서도 사용 가능하게 될거야!")
jake.함수2()
print(jake.인스턴스변수)

parameter는 함수 내에서만 사용 가능한 지역 변수variable다. 각 함수인 method를 나가는 순간 쓸 수 없다. 

instance variable는 class 내의 다른 함수에서도 사용 가능한 광역 변수다. 

self.parameter = instance

 

class 경제공부():
    def 읽기(self):
        print("self: ", self)
        print("type(self): ", type(self))

    def 분석(self, parameter):
        #self.parameter : instance 변수 - 클래스 내의 다른 함수에서도 사용 가능
        self.parameter=parameter
        #instance=self.parameter
        print("self.parameter: ", self.parameter)

    def 요약(self):
        print("self.instance2: ", self.parameter)

    # 자산스터디는 객체다
    # 객체=개별 데이터=object
    # 주5일 경제스터디도 객체다
    # 자산스터디와 주5일 경제스터디 그 자체는 인스턴스가 아니다. class 경제공부의 인스턴스다(관계성 안에서 인스턴스가 됨)

asset = 경제공부()

asset.분석("지금넘기는파라미터는인스턴스변수가되어서다른함수에서도사용가능하게될거야!")
asset.읽기()
asset.요약()

print("asset.parameter: ", asset.parameter)

하지만 이렇게 해도 동작하는데..

parameter와 instance의 위치를 위 아래 코드가 바뀌었어도

관계성만 동일하면 코드가 잘 작동하는 듯 싶다. 

 

def 함수(self, parameter): 인 함수에

object.method("parameter->instance")를 해야 작동하는 듯 싶다. 

 

처음 정의한 method인 '읽기'는 속성을 보여주는 함수라 여기다 parameter를 넣으면 안 된다.

하지만 일단 parameter를 '분석'에 넣으면 instance가 되어 '읽기'에서도 작동한다.