2014-11-25 2 views
-1

파이썬 3의 인스턴스 변수와 멤버 변수의 차이점은 무엇이며 어떻게 작성합니까? 우리는 파이썬 3에서 클래스를 만드는 법을 배우는 중이고이 변수 유형을 이해하지 못합니다.인스턴스 변수와 멤버 변수 python 3

"__ init __"방법보다 먼저 설정할 수 있습니까?

저는 ID가 인스턴스 변수 여야하고 코드와 밸런스를 필요로하는 코드를 작성하고 있습니다. 그리고 annualInterestRate는 멤버 변수 여야합니다. 이것은 내가 그것을 위해 무엇을 가지고 :

def __init__(self, ID=0, initialbalance=100.0, annualInterestRate=0.0): 
     self.__ID = int(ID) 
     self.__balance = float(initialbalance) 
     self.__annualInterestRate = float(annualInterestRate) 

이드 클래스 변수하기 위해, 나는 그것을 "__ 초기화 __"전에 양을 설정해야합니까? 나중에 프로그램에서 값을 변경할 수 있어야합니다.

답변

0

클래스 속성은 클래스 자체가 소유하는 속성입니다. 클래스의 모든 인스턴스에서 공유됩니다. 따라서 모든 인스턴스에 대해 동일한 값을 갖습니다. 멤버 변수는 클래스 멤버에만 고유하며 클래스의 각 인스턴스마다 다른 값을 가질 수 있습니다.

이것은 클래스 속성을 보여줍니다. a은 모든 인스턴스에서 동일합니다.

>>> class A: 
...  a = "I am a class attribute!" 
... 
>>> x = A() 
>>> y = A() 
>>> x.a 
'I am a class attribute!' 
>>> y.a 
'I am a class attribute!' 
>>> A.a 
'I am a class attribute!' 

이제 하나를 변경하려고하면 변경됩니다.

>>> A.a = "I am changed now" 
>>> A.a 
'I am changed now' 
>>> x.a 
'I am changed now' 
>>> y.a 
'I am changed now' 

이것은 멤버 변수와 각 인스턴스에 대한 특정 멤버의 상태를 보여줍니다. 이번에 __init__ 함수 내에 a이 정의되어 클래스 변수가 아닌 멤버 변수가됩니다. 이 클래스

>>> class B: 
...  def __init__(self): 
...   self.a = 10 
>>> x = B() 
>>> y = B() 
>>> x.a 
10 
>>> y.a 
10 
>>> y.a = 12 
>>> x.a 
10 
>>> y.a 
12 

, self.a이 클래스의 인스턴스 y 10. 디폴트 값을 부여하고,이를도 12 ( y.a = 12)로 변경된다. 클래스의 x 인스턴스는이 답변의 시작 부분은 파이썬 코스

Class and Instance Attributes 페이지에서 찍은 10

의 기본값 유지

관련 문제