2017-08-17 51 views
0

我已經進入Python一段時間了,因爲我仍然是初學者,我儘量保持簡單。然而,我希望有一件事能做到,但不能正確。Python,使用變量作爲對象「名稱」

我搜索了一下,發現了幾個有點類似於我的問題,但答案主要是使用eval()exec(),我讀到的是非常糟糕的做法。使用字典似乎是另一個經常提出的選項,但我不知道如何將其應用於我的案例。

class pthead: 

    def __init__(self, name, port): 
     self.name = name 
     self.port = port 

    def initialize(self): 
      ser4.write(initialization_commands) # works 
      (self.port).write(initialization_commands) # doesn't work 


UART.setup("UART4") 
ser4 = serial.Serial(port="/dev/ttyO4", baudrate=9600, timeout=0.5) 

head = pthead("kop", "ser4") 
head.initialize() 

難道真的很難使用變量作爲對象嗎?(希望我的術語是正確的)?我很難相信這是不是一個普通的事情,例如,用戶輸入後...

我使用python 2.7(用於遺留目的)。

+0

使用這個'head = pthead(「kop」,ser4)'它會工作。 –

回答

1

您沒有正確使用它。你提供的端口不是一個端口,而是一個字符串`「ser4」。

class pthead: 

    def __init__(self, name, port): 
     self.name = name 
     self.port = port 

    def initialize(self): 
     self.port.write(initialization_commands) # it will work 

if __name__ == "__main__": 
    UART.setup("UART4") 
    ser4 = serial.Serial(port="/dev/ttyO4", baudrate=9600, timeout=0.5) 

    head = pthead("kop", ser4) #supplying port as second argument 
    head.initialize() 
+0

在腳本中使用時確實有效。在交互模式下(我嘗試了不同的選項),情況並非如此...... 'x = pthead(「name」,ser4)'returns'「NameError:name'ser4'is not defined」' –

+0

@ DieterVansteenwegenON4DD如果您將它用作腳本,那麼您需要在那裏提供ser4的端口值。由於您想提供您的提供端口,因此您需要在代碼中定義它,然後將其作爲參數傳遞。 –

+0

在課堂以外的代碼是你需要在導入頭文件時放入另一個文件 –

相關問題