ctypes指针问题

时间:2009-09-08 21:55:08

标签: python object pointers declaration ctypes

我正在阅读ctypes教程,我偶然发现了这个:

s = "Hello, World"
c_s = c_char_p(s)
print c_s
c_s.value = "Hi, there"

但我一直在使用这样的指针:

s = "Hello, World!"
c_s = c_char_p()
c_s = s
print c_s
c_s.value

Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    c_s.value
AttributeError: 'str' object has no attribute 'value'

为什么当我单向执行时,我可以访问c_s.value,而当我以其他方式执行时,没有值对象?

全部谢谢!

1 个答案:

答案 0 :(得分:3)

在你的第二个例子中,你得到了陈述:

c_s = c_char_p()
c_s = s

ctypes模块无法破解rules of Python assignments,在上述情况下,第二个分配重新绑定刚刚创建的c_s名称{ {1}} c_char_p对象的对象。实际上,这会抛弃新创建的s对象,并且您的代码会在您的问题中产生错误,因为常规Python字符串没有c_char_p属性。

尝试改为:

.value

看看这是否符合您的期望。