Я новичок в python, поэтому вам нужна ваша помощь по следующему сообщению об ошибке. У меня есть два файла, первый из которых - «test1.py», который я запускаю, и имеет следующий код.AttributeError: <class> экземпляр не имеет атрибута <>
import sys, time, re, os, pickle
from ComLib import *
obj = Com()
obj.ComOpen()
obj.ComReset()
obj.ComClose()
и второй файл «ComLib.py» и имеет следующий код
import serial, sys, re, pickle, time
class Com:
def ComOpen(self):
self = serial.Serial()
self.port = "COM1"
self.baudrate = 9600
self.bytesize = serial.EIGHTBITS #number of bits per bytes
self.parity = serial.PARITY_NONE #set parity check: no parity
self.stopbits = serial.STOPBITS_ONE #number of stop bits
self.timeout = 1 #non-block read
self.xonxoff = True #disable software flow control
self.rtscts = False #disable hardware (RTS/CTS) flow control
self.dsrdtr = False #disable hardware (DSR/DTR) flow control
self.writeTimeout = 2 #timeout for write
self.open()
return
def ComClose(self):
self.close()
return
def ComReset(self):
print "Executing ComReset function...!!"
self.write("~~~~~~~~~~\r")
i = 0
while i<10 :
response = self.readline()
print "Inside first while loop...!!"
print "response = "+response
if (response == ':'):
print "-->colon found...ready for next input<---"
break
i=i+1
time.sleep(0.5)
return
При выполнении выше я получаю следующее сообщение об ошибке
"Traceback (most recent call last):
File "C:\Users\vgupta\Desktop\KeyAT\final\WDEAutomationTestSuite\WDETestSuite\Bootguard\TC#001.py", line 17, in <modul
e>
obj.ComReset()
File "C:\Users\vgupta\Desktop\KeyAT\final\WDEAutomationTestSuite\APILib\ComLib.py", line 52, in ComReset
self.write("~~~~~~~~~~\r")
AttributeError: Com instance has no attribute 'write'"
Может кто-нибудь мне помочь чтобы узнать, что здесь не так.
Спасибо, Vipul
self = serial.Serial() запахи .. Может быть, вы хотели hineritance? http://docs.python.org/2/tutorial/classes.html#inheritance – BlackBear
Согласовано. Если это сработает так, как вам кажется, это ваш экземпляр будет заменен экземпляром «Serial» и больше не будет иметь никаких методов. Это не работает; вы просто переназначаете локальную переменную 'self' на новый экземпляр Serial, а затем устанавливаете на нем некоторые атрибуты и вызываете его' open() '... и затем отбрасываете. – kindall