我正在阅读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,而当我以另一种方式操作时,没有值对象?
谢谢大家!
发布于 2009-09-08 22:44:11
在您的第二个示例中,您获得了以下语句:
c_s = c_char_p()
c_s = sctypes模块不能中断rules of Python assignments,在上面的例子中,第二个赋值将c_s名称从刚刚创建的c_char_p对象重新绑定到s对象。实际上,这会丢弃新创建的c_char_p对象,并且您的代码会在问题中生成错误,因为常规的Python字符串没有.value属性。
相反,尝试:
c_s = c_char_p()
c_s.value = s看看这是否符合你的期望。
https://stackoverflow.com/questions/1396533
复制相似问题