python代码在独立函数中运行,但不是作为类的一部分

时间:2014-05-29 03:34:15

标签: python python-3.x

在Python 3.3.5中,我正在使用一些作为独立函数运行的代码构建一个类,但是在运行类版本时它会在没有错误消息的情况下中止。它依赖于第三方软件包pcFastDB,以pyd。分发。

unit1.py
import sys
import pcFastDB as p3

def get_context():
    return p3.pcContext.create()

def get_DB(ctx, dbName):
    return p3.pcDB.open(ctx, dbName)
.. more..

可以用作:

ctx = get_context()
db = get_DB(ctx, 'tester')
..do things with db

Unit2.py
import pcFastDB as p3
class DBOperation(object):
    def __init__(self, DB_name):
        '''
        Get the context, open the database and fill a channel list
        '''
        self.ctx = p3.pcContext.create()
        print('Context ' + str(self.ctx ))
        print(' - opening ' + DB_name)
        self.db = p3.pcDB.open(self.ctx, DB_name)  #aborts here
        print('DB opened successfully...' +str(self.db))
当我尝试打开数据库时,

以静默方式中止。

db = DBOperation('tester')

测试人员数据库存在并位于我正在运行它的项目文件夹中。

没有异常,没有错误,只是停止执行。 PyDev不太喜欢pyd文件。我没有得到任何代码洞察所以调试有点神秘,但在IPython3中我可以看到所有的函数和类成员,所以我知道它没问题。不幸的是,在IPython3中调试对我来说是一个难以理解的谜。

无论如何,我知道我正在调用正确的函数并且我知道函数可以工作,因为它在Unit1中工作正常,它只是不能作为类成员工作。这甚至可能吗?

我已经从 init 中删除了数据库行并单独调用它们,并且我已经将ctx从类中删除并将其传递给函数,但这也无效。从PyDev,IPython3或命令行运行时,它的行为相同。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

谢谢大家,我通过基本上将相同的代码重写为新模块来实现它。文件本身似乎有些奇怪。我责备PyDev。

马克