Python 2.7 - 类

标签 python linux class module

我正在尝试在 python (perfmon) 中编辑一个库 - 文件是 session.py

我想添加一个可以记录 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'

我做错了什么?我知道 self 在 python 中充当构造函数,我可以在那里返回一个值吗?

最佳答案

不能从类构造函数返回任何东西(除了 None 之外)。

否则会得到

TypeError: __init__() should return None

关于Python 2.7 - 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17095401/

相关文章:

php - 如何销毁 PHP 中的类对象?

c++ - 运算符必须取 'void'

python - 如果未安装可选模块,则测试代码的行为

Python 将数据发送到 MySQL 数据库

Python:代码之前运行后 DLL 加载失败

linux - 分配内存给其他进程不能在linux中使用的进程

android - 为什么我无法设置 minSdkVersion

windows - Windows 和 Linux 上的 ImageMagick 'convert -sepia-tone' 不同

c++ - 基类到派生类的类型转换

Python:使用检查创建函数签名