2016-08-08 5 views
0

なぜ私のコードがnullを返すのだろうと思っていますが、printコマンドは適切な値を返します。クラス内でnullを返す

class Newclass: 
    def __init__(self,portal): 
     config = configparser.ConfigParser() 
     config.read("config.ini") 
     self.connection_source=config.get(portal,'Sources') 
    def getPortalSources(self): 
     # print (connection_source) ## Sources 
     return self.connection_source 

emp1 = Newclass('portalname')  
emp1.getPortalSources() 
+0

何あなたは "return null"を意味しますか?あなたは 'None'を意味しますか?あなたはコンソール上のディスプレイと 'return'を混同していますか? – cdarke

答えて

2

あなたは関数を呼び出していますが、戻り値では何もしません。実際にそれを取得し、印刷する

試してみてください。

emp1 = Newclass('portalname')  
value = emp1.getPortalSources() 
print(value) 

ます。またconfigparser.NoOptionErrorSourcesが設定ファイルに存在しない場合に発生するのを待つということをキャッチすることもできます。

try: 
    self.connection_source = config.get(portal,'Sources') 
except configparser.NoOptionError: 
    print("Couldn't find 'Sources' in conf file") 
+0

よろしくお願いいたします。 – bazyl

+0

'ConfigParser.get()'は 'KeyError'ではなく' configparser.NoOptionError'をスローします(そして 'KeyError'のサブクラスでもありません)。 – Duncan

+0

@ダンカン私は正しかった。私はあまりにも長い間、それのカスタムサブクラスを使用していたと推測.. :) – DeepSpace

1
import configparser, os 


class ConfigIni(dict, configparser.ConfigParser): 
    def __init__(self, file): 
     configparser.ConfigParser.__init__(self) 
     self.iniFile=file 
     if os.path.isfile(self.iniFile): 
      self.read(self.iniFile) 
      for section in self.sections(): 
       self[section] = {} 

       for var in self.options(section): 
        val = self.get(section, var) 
        self[section][var] = val 


f=os.path.join(os.getcwd(), 'config.ini') 
print(ConfigIni(f)) 
関連する問題