2016-04-28 50 views
1
class HumidityServer(CoAP): 
    def __init__(self, host, port, noOfSensors=10, multicast=False): 
     CoAP.__init__(self, (host, port), multicast) 

     for num in range(noOfSensors): 
      self.add_resource('humidity'+num+'/', HumidityResource(num)) 

此摘錄生成計劃的一部分:NameError:名字沒有在Python初始化函數定義

Traceback (most recent call last): 
    File "humidityserver.py", line 10, in <module> 
    class HumidityServer(CoAP): 
    File "humidityserver.py", line 14, in HumidityServer 
    for num in range(noOfSensors): 
NameError: name 'noOfSensors' is not defined 

爲什麼會發生這種情況,即使我定義爲變量的默認值?

回答

1

執行defalut值你混合代碼中的製表符和空格;這是你原來的代碼粘貼到一個問題:

enter image description here

灰色實線是標籤,該點是空間。

請注意for循環如何縮進到8個空格,但是是如何縮進一個製表符的? Python的擴展選項卡空格,不是四個,所以到Python代碼看起來像這個:

source code at 8 spaces per tab

現在你可以看到for環路__init__方法和noOfSensors那裏沒有定義來自__init__函數簽名的變量。

不要在縮進混合製表符和空格,堅持只是標籤或只是空間。 PEP 8 Python風格指南strongly advises you to use only spaces for indentation。例如,只要您使用TAB密鑰,就可以輕鬆配置編輯器以插入空格。

+0

很好的解釋,thx – Sahand

+0

什麼文本編輯器是你的摘錄? – Sahand

+0

@Sandi:Sublime Text 3,使用Monokay色彩方案。 –

-3

它沒有實例化然而,如此類時,創建人

相關問題