【发布时间】:2012-12-14 17:47:21
【问题描述】:
我在这里的出拳远超我的体重,但请耐心等待这位 Python 业余爱好者。我是一名 PHP 开发人员,以前几乎没有接触过这种语言。
我想要做的是在一个类中调用一个方法......听起来很简单吗?我对“自我”指的是什么以及在类内和类外调用这种方法的正确程序是什么感到完全困惑。
有人可以向我解释,如何使用变量RIGHT 调用move 方法。我已经尝试在几个“学习 python”网站上研究这个并在 StackOverflow 上搜索,但无济于事。任何帮助将不胜感激。
以下类在 Scott 的 Python 脚本中工作,该脚本由终端 GUI (urwid) 访问。
我正在使用的函数是 Scott Weston 的导弹发射器 Python 脚本,我正在尝试将其挂接到 PHP 网络服务器中。
class MissileDevice:
INITA = (85, 83, 66, 67, 0, 0, 4, 0)
INITB = (85, 83, 66, 67, 0, 64, 2, 0)
CMDFILL = ( 8, 8,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0)
STOP = ( 0, 0, 0, 0, 0, 0)
LEFT = ( 0, 1, 0, 0, 0, 0)
RIGHT = ( 0, 0, 1, 0, 0, 0)
UP = ( 0, 0, 0, 1, 0, 0)
DOWN = ( 0, 0, 0, 0, 1, 0)
LEFTUP = ( 0, 1, 0, 1, 0, 0)
RIGHTUP = ( 0, 0, 1, 1, 0, 0)
LEFTDOWN = ( 0, 1, 0, 0, 1, 0)
RIGHTDOWN = ( 0, 0, 1, 0, 1, 0)
FIRE = ( 0, 0, 0, 0, 0, 1)
def __init__(self, battery):
try:
self.dev=UsbDevice(0x1130, 0x0202, battery)
self.dev.open()
self.dev.handle.reset()
except NoMissilesError, e:
raise NoMissilesError()
def move(self, direction):
self.dev.handle.controlMsg(0x21, 0x09, self.INITA, 0x02, 0x01)
self.dev.handle.controlMsg(0x21, 0x09, self.INITB, 0x02, 0x01)
self.dev.handle.controlMsg(0x21, 0x09, direction+self.CMDFILL, 0x02, 0x01)
【问题讨论】:
-
您认为您的代码有什么问题?看起来你正在使用
self对。 -
与上面的代码无关,那是从工作代码中提取的一个类。我问了一个更基本的问题;如何在类中调用方法。
-
我在问如何从一个类中调用一个方法,使用这个给定的例子。一切如前所述。我是在寻求解释而不是解决方案。
-
我在创建课程时遇到了类似的问题。我使用 self.
来调用类中的方法。在类 . 之外。希望你明白了