2010-03-31 97 views
0

我試圖讓def wfsc_pod1和wfsc_ip進入相同的def。我不太清楚如何處理這個問題。我希望wfsc_pod1顯示名稱,子網和網關的所有信息。然後wfsc_ip顯示它下面的IP地址。當我運行它時,我也會得到一個None值。不知道爲什麼。任何更pythonic更讚賞。Python - 列表和循環在一個def

class OutageAddress: 
    subnet = ["255.255.255.0", "255.255.255.1"] 

    # Gateway order is matched with names 
    gateway = ["192.168.1.1", "192.168.1.2", "192.168.1.3", "192.168.1.4", 
       "192.168.1.5", "192.168.1.6", "192.168.1.7", "192.168.1.8", 
       "192.168.1.9"] 

    name = ["LOC1", "LOC2", "LOC3", "LOC4", 
       "LOC5", "LOC6", "LOC7", "LOC8", 
       "LOC9"] 

    def wfsc_pod1(self): 
     wfsc_1 = "%s\t %s\t %s\t" % (network.name[0],network.subnet[0],network.gateway[0]) 
     return wfsc_1 

    def wfsc_ip(self): 
     for ip in range(100,110): 
      ip = "192.168.1."+str(ip) 
      print ip 

network = OutageAddress() 
print network.wfsc_pod1() 
print network.wfsc_ip() 
+1

你一般要繼承'object',而不是什麼都不讓你使用*新風格的類*,即'類OutageAddress(object):' – 2010-03-31 05:25:28

+0

通過將兩種方法「納入同一個def」,你的意思是什麼? – outis 2010-03-31 05:25:55

回答

1

首先,你大概的意思是寫wfsc_pod1這樣的:

def wfsc_pod1(self): 
    return "%s\t%s\t%s" % (self.name[0], self.subnet[0], self.gateway[0]) 

,並呼籲wfsc_ip這樣的:

network.wfsc_ip() # no print 

如果你想結合wfsc_pod1wfsc_ip,你可以這樣做:

def wfsc_combined(self): 
    output = [] 
    output.append("%s\t%s\t%s" % (self.name[0], self.subnet[0], self.gateway[0])) 
    for ip in range(100,110): 
     output.append("192.168.1.%d" % ip) 
    return '\n'.join(output) 

and call th是打印語句的函數。

然而,更好的方法(IMO)是添加打印語句裏面wfsc_combined,並調用它,無需打印聲明:

def wfsc_combined(self): 
    print "%s\t%s\t%s" % (self.name[0], self.subnet[0], self.gateway[0]) 
    for ip in range(100,110): 
     print "192.168.1.%d" % ip 
+0

還在學習,謝謝你指點我正確的方向! – Dunwitch 2010-03-31 05:35:26

+0

@Dunwitch:不客氣。 =) – 2010-03-31 11:09:27

0

OutageAddress.wfsc_ip回報None,因爲它沒有return語句。

0

你得到一個None,因爲那是wfsc_ip返回的值。不返回任何東西的函數/方法返回None

0

你從print network.wfsc_ip()得到None因爲wfsc_ip回報任何東西,這是同樣的事情返回None - 什麼其他你期望從打印,只是沒有一個函數的值來獲得回報什麼?

你似乎是屈服於一個深深的困惑顯示東西之間(例如用print語句,如wfsc_ip那樣),返回信息,wfsc_pod1一樣。除非你澄清這種混淆,否則沒有人能真正幫助你。