小编Lar*_*nke的帖子

从C定义Python类

我为Python包装了一些C代码,它可以工作.C模块创建一个句柄,我将其传递给Python PyCapsule.我想要的API可以用Python制作:

import wrapped

class Test(object):
   def __init__(self, loc ):
      self.handle = wrapped.new(loc)

   def foo(self, data):
      return wrapped.foo(self.handle, data)

所以这个问题更像是一个美容问题.我是否必须包装包装器,或者我可以将上面显示的代码移动到C代码中,即导出类而不是一堆函数?

c python-c-api python-2.7 python-extensions

8
推荐指数
2
解决办法
2146
查看次数

python namespace:__ main __.类不是package.Class的实例

考虑你有两个如下定义的python文件.假设一个是通用包(class2),另一个执行特定覆盖并充当可执行文件(class1).

class1.py:

#!/usr/bin/python
class Test(object):
    pass

class Verificator():
    def check(self, myObject):
        if not isinstance( myObject, Test ):
            print "%s is no instance of %s" % (type(myObject),Test)
        else:
            print "OK!"

if __name__ == '__main__':
    from class2 import getTest

    v = Verificator()
    t = Test()
    v.check(t)
    s = getTest()
    v.check(s)
Run Code Online (Sandbox Code Playgroud)

class2.py:

from class1 import Test
def getTest():
    return Test()
Run Code Online (Sandbox Code Playgroud)

会发生的事情是第一次检查没问题,第二次检查失败.其原因是,t__main__.Test,而sclass1.Testv.check()支票__main__.Test,但在一天结束的时候它是同一类的吧?

有没有办法写v.check()这样的,它也接受class1.Test对象,或任何其他方式来解决这个问题?

python namespaces

7
推荐指数
2
解决办法
3657
查看次数