在另一个文件中使用另一个类中定义的定义 - python

时间:2016-08-30 12:22:47

标签: python-2.7 class

我有一个名为valueType.py

的文件

它包含以下内容:

class SInt8(ValueType):
    # Set _format as big endian signed char( 1 byte )
    _format = '>b'

class UInt8(ValueType): 
    # Set _format as big endian unsigned char( 1 byte )
    _format = '>B'

class SInt16(ValueType):
    # Set _format as big endian signed short( 2 bytes )
    _format = '>h'

class UInt16(ValueType): 
    # Set _format as big endian unsigned short( 2 bytes )
    _format = '>H'

class SInt32(ValueType): 
    # Set _format as big endian signed int( 4 bytes )
    _format = '>i'

class UInt32(ValueType): 
    # Set _format as big endian unsigned int( 4 bytes )
    _format = '>I'

class Real32(ValueType): 
    # Set _format as big endian float( 4 bytes )
    _format = '>f'

我还有另一个文件,我们只需将其称为parser.py。在parser.py中,我定义了一个名为parameter的对象,该对象具有一个称为parameter.values的属性。

parameter.values包含原始十六进制值,我需要将它们转换为十进制格式,然后我将使用struct.unpack(fmt, string)。 我的问题是,如何在_format内的valueType.py中使用parser.py的定义?

valueType.py已导入parser.py,并且它们都位于同一目录

1 个答案:

答案 0 :(得分:0)

简单,只需执行X._format,其中X是您的某个类或其实例

这是一个说明性的例子

>>> class Test(object):
        _format = "test"


>>> Test._format
'test'
>>> t=Test()
>>> t._format
'test'
>>> 

在python中没有什么是私有的,如果困扰你的是_只是一个绅士协议,说“不要在这个类/模块之外使用它”。但如果你知道有什么东西可以使用它。

所以在你的情况下,例如

#parser.py
import valueType
...
x = struct.unpack(valueType.SInt8._format, parameter.values)

如果您只是使用这些类,那么字典可能是更好的选择

valueType.py

formatType = {
        "SInt8":'>b',
        "UInt8":'>B',
        "SInt16":'>h',
        "UInt16":'>H',
        "SInt32":'>i',
        "UInt32":'>I',
        "Real32":'>f'
    }

parser.py

from valueType import formatType
...
x = struct.unpack(formatType["SInt8"], parameter.values)