Class中常量的按位运算不能按预期工作

时间:2013-09-02 16:14:40

标签: python class constants bit-manipulation

我试图对一个类中的某些常量进行一些按位操作,并且出于某种原因,计算的值没有被存储。

这就是我正在做的事情:

class FramePacket(object):
    def __init__(self,frame):
        self._frame = frame

    def create_packet(self):

        # Frame ID
        FRAME_ID = 0x7

        # Commands
        CMD_PING = 0x0
        CMD_STORE = 0x1
        CMD_PLAY = 0x2
        CMD_DEMO = 0x3
        CMD_CLEAR = 0xE
        CMD_WIPE = 0xF

        f_data = (FRAME_ID << 4) + CMD_STORE
        print "f_data  ---> " + str(f_data)

当我执行此操作时,我收到错误并在追溯中看到这一点:

    print "f_data  ---> " + str(f_data)
NameError: name 'f_data' is not defined

但是,当我在Python解释器中执行它时,不使用类,它按预期工作:

>>> CMD_STORE = 0x1
>>> FRAME_ID = 0x7
>>> f_data = (FRAME_ID << 4) + CMD_STORE
>>> print "f_data  ---> " + str(f_data)
f_data  ---> 113

我错过了什么,但不确定是什么......

感谢。

0 个答案:

没有答案