python:类实例看不到自身属性

2024-05-16 00:48:14 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的项目中,我使用module from known bt_manager对sbc音频流进行解码。这个模块是来自rtpsbc库的C函数的python包装。你知道吗

class SBCCodec:
    def __init__(self, config):

            import sys

            try:
                self.codec = ffi.verify(b'#include "rtpsbc.h"',
                                        libraries=[b'rtpsbc'],
                                        ext_package=b'rtpsbc')
            except:
                print 'Exception:', sys.exc_info()[0]

            self.config = ffi.new('sbc_t *')
            self.ts = ffi.new('unsigned int *', 0)
            self.seq_num = ffi.new('unsigned int *', 0)
            self._init_sbc_config(config)
            self.codec.sbc_init(self.config, 0)

当我尝试创建SBCCodec类实例时,它给了我:

AttributeError: SBCCodec instance has no attribute 'codec'

您可以在我上面发布的代码中看到这个属性。它适用于ffi方法(外国金融机构验证, 外国金融机构新). 当我在ipython中输入这些命令时,一切都正常无误。你知道吗

我错过了什么?你知道吗


Tags: 项目selfconfignewinitsyscodecint
1条回答
网友
1楼 · 发布于 2024-05-16 00:48:14

正如@Torxed已经提到的,唯一的方法是如果外国金融机构验证在try块中抛出异常。如果发生这种情况self.codec编解码器将不会初始化。如果发生这种情况,您的代码不会重新抛出异常,并在简单打印后继续正常运行(这是不干净的行为)。最后一个语句尝试调用self.codec.config.sbc_init,即它假定self.codec编解码器已经初始化,这在这个特殊情况下是不正确的,这就是为什么您会得到AttibuteError。你知道吗

不管外国金融机构验证在初始化开始时定义self.codec编解码器=None并在您的最终陈述中插入一个复选框,例如:

if (self.codec != None ):
   self.codec.sbc_init(self.config, 0)

希望有帮助。你知道吗

相关问题 更多 >