2016-08-08 3 views
-2

얘들 아, 하나의 클래스에서 하나의 메소드에서 다른 메소드로 변수를 처리하는 방법을 생각합니다. 예 :한 클래스에서 하나의 메소드에서 다른 클래스로 프로세스 변수들

class Newclas: 
    def getPortalSources(self,portal): 
      self.connection_source=self.config.get("portal_"+portal,'Sources') 
      self.portal=portal 

    def getConnection(self,source): 
      self.source=source 
      self.connection_string=self.config.get('CONNECTION',self.portal+'_'+source+'_'+'connectstring') ## Connection 

지금까지 나는 위와 같은 것을 사용했습니다. 그래서 getConnection에서 getPortalSources 메소드의 self.portal 변수를 사용했습니다. 그러나 그것은 나를 위해 아직도 조금 불분명하다.

그런 일을하는 데있어 다른보다 나은 aproach가 있는지 궁금한가요? 그렇다면 몇 가지 팁이나 예를 들어 주시겠습니까?

예를 들어

: 그것은 작동하지 않습니다 물론

def getPortalSources(self,portal): 
     self.connection_source=self.config.get("portal_"+portal,'Sources') 
     self.portal=portal 

def getConnection(source): 
     self.connection_string=self.config.get('CONNECTION',getPortalSources.portal+'_'+source+'_'+'connectstring') ## Connection 

하지만 내 생각은 내 생각이있어.

감사합니다.

답변

0

내가 제안하는 것은 생성자 또는 전역 변수를 사용하는 것입니다.

내가 여기 생성자에 대한 예제를 제공합니다

:이 클래스의 객체를 생성 할 때

class Newclas: 
    def __init__(self,portal='default_portal',source='default_source'): 
     self.portal = portal 
     self.source = source 

    def getPortalSources(self,portal=self.portal): 
      self.connection_source=self.config.get("portal_"+portal,'Sources') 


    def getConnection(self,source=self.source): 
      self.connection_string=self.config.get('CONNECTION',self.portal+'_'+source+'_'+'connectstring') ## Connection 

그래서 여기에 무슨 일이 일어나고 있는지, 당신은 다음과 같이합니다

new_obj = Newclas(portal='the_portal',source='the source') 

portal='the_portal',source='the source'는 선택 사항입니다 사용 이 값을 제공하지 않으면 기본값을 사용하게됩니다.

이제는 말하면 : new_obj.getConnection() 그게 당신에게 제공 할 것입니다.

당신이 말하면 : new_obj.getConnection(source='some_other_source') 그 소스와 함께 줄 것입니다.

관련 문제