2016-07-27 3 views
1

안녕하세요 저는 C로 프로그래밍을 쳐다 보았습니다. 그리고 저는 conld'nt가 파이썬에서 가치 범위를 이해하고 있습니다. 여기파이썬에서 혼란스러운 값 범위

내 코드

class ScenarioEnvironment(): 
    def __init__(self): 
     print(self) 

class report(): 
    config = ScenarioEnvironment() 
    def __init__(self): 
     self.config = ScenarioEnvironment() 

무슨 일이 초기화에서 설정 및 구성을 전달()?

그리고 내가 가치있는 범위가 될 값 범위가 궁금 할까? 귀하의 질문에 좀 모호한 것 때문에

+0

구성을 보고서 클래스에 전달하지 않고 다른 클래스 생성자에 대한 매개 변수가 없어 실행되지 않습니다. –

답변

3

당신은 클래스 속성 및 인스턴스 객체의 속성 사이의 차이점을 알아야합니다. 는 아마도 이러한 코드는 당신을 도울 것입니다 :

class TestConfig1(object): 
    config = 1 

    def __init__(self): 
     self.config = 2 


class TestConfig2(object): 
    config = 1 

    def __init__(self): 
     self.config2 = 2 

if __name__ == "__main__": 
    print TestConfig1.config 
    t = TestConfig1() 
    print t.config 
    t2 = TestConfig2() 
    print t2.config 
    print t2.config2 

더 당신이 파이썬 블로그를 볼 수 있습니다. click here

0

, 난 그냥 코드를 수정/코멘트 수 있습니다 :

class ScenarioEnvironment(): 
    def __init__(self,x): 
     self.x = x # Assigning instance variable x to constructor parameter x. 
     print(self) # You're printing the object instance. 

class report(): 
    # Static variable shared amongst all classes. 
    config = ScenarioEnvironment(None) # Assigned to new instance of ScenarioEnvironment. 

    def __init__(self): 
     # No argument, must pass one (None). 
     # self.config is to a new ScenarioEnvironment instance. 
     self.config = ScenarioEnvironment(None) 

는 클래스를 시도 할 수 있습니다.

출력 :

s = ScenarioEnvironment(None) 
r = report() 
>>> <__main__.ScenarioEnvironment instance at 0x026F4238> 
>>> <__main__.ScenarioEnvironment instance at 0x026F4300> 
>>> <__main__.ScenarioEnvironment instance at 0x026F4350>