Я пытаюсь редактировать библиотеку в питоне (perfmon)
- файл session.py
Python 2.7 - Классы
Я хочу, чтобы добавить модуль, который может записывать некоторые чтения из порта USB.
Это также мое первое испытание с классами в Python
from perfmon import *
import os
import sys
import serial
# Common base class
class Session:
def __init__(self, events):
self.system = System()
self.event_names = events
self.events = []
self.fds = []
for e in events:
err, encoding = pfm_get_perf_event_encoding(e, PFM_PLM0 | PFM_PLM3,
None, None)
self.events.append(encoding)
self.USB = serial.Serial("/dev/ttyUSB0",115200)
def __del__(self):
pass
def read(self, fd):
# TODO: determine counter width
return os.read(fd, 8)
class PerThreadSession(Session):
def __init__(self, pid, events):
self.pid = pid
Session.__init__(self, events)
def __del__(self):
Session.__del__(self)
def start(self):
for e in self.events:
self.fds.append(perf_event_open(e, self.pid, -1, -1, 0))
def read(self, i):
return Session.read(self, self.fds[i])
class USB(Session):
def __init__(self):
return self.USB
Это следующая ошибка я получаю:
Python 2.7.3 (default, Apr 14 2012, 08:58:41) [GCC] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import perfmon
>>> test = perfmon.USB()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'USB'
Что это ошибка, которую я делаю? Я понял, что сам действует как конструктор в python, могу ли я вернуть там значение?
Похоже, что вы являетесь файлом с именем 'perfmon.py', но на вашем пути поиска есть модуль' perfmon'. Я предполагаю, что ваш оператор import выбирает неправильный ... – mgilson
Например: если я хочу сказать PerThreadSession. Я говорю, perfmon.PerThreadSession (,,) – pistal
Вы можете показать 'perfmon .__ file__' результат – oleg