2013-10-14 2 views
0

Я новичок в 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

+1

self = serial.Serial() запахи .. Может быть, вы хотели hineritance? http://docs.python.org/2/tutorial/classes.html#inheritance – BlackBear

+0

Согласовано. Если это сработает так, как вам кажется, это ваш экземпляр будет заменен экземпляром «Serial» и больше не будет иметь никаких методов. Это не работает; вы просто переназначаете локальную переменную 'self' на новый экземпляр Serial, а затем устанавливаете на нем некоторые атрибуты и вызываете его' open() '... и затем отбрасываете. – kindall

ответ

2
  1. Ваш decleration Должно быть:
self.sSerial = serial.Serial() 
self.sSerial.port = "COM1" 
self.sSerial.baudrate = 9600 
......... 

, то вы можете сделать self.sSerial.write("~~~~~~~~~~\r")

  1. класс Com отсутствует __init__
+0

'self.sSerial = serial.Serial ('COM1', baudrate = 9600)' звучит намного интуитивно понятным ... – glglgl

Смежные вопросы