【发布时间】:2017-07-25 00:30:55
【问题描述】:
获取参数化属性(Ms Word 的Options.DefaultFilePath)工作正常:
In [117]: o
Out[117]: <win32com.gen_py.Microsoft Word 12.0 Object Library.Options instance at 0x43743792>
In [121]: o.DefaultFilePath(win32com.client.constants.wdDocumentsPath)
Out[121]: u'c:\\documents and settings\\user\\\u043c\u043e\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b\\\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f \u043f\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0438'
但不设置:
In [122]: o.DefaultFilePath(win32com.client.constants.wdDocumentsPath)=".."
File "<ipython-input-122-f2ed5d26c67c>", line 1
o.DefaultFilePath(win32com.client.constants.wdDocumentsPath)=".."
SyntaxError: can't assign to function call
还尝试了C# Late Binding for Parameterized Property的建议方式:
In [123]: o.set_DefaultFilePath(win32com.client.constants.wdDocumentsPath,"..")
<...>
AttributeError: '<win32com.gen_py.Microsoft Word 12.0 Object Library.Options instance at 0x43743792>' object has no attribute 'set_DefaultFilePath'
【问题讨论】:
-
你试过括号形式吗?
o.DefaultFilePath[win32com.client.constants.wdDocumentsPath] = ".." -
@MichaelGunter 我试过了。并得到
TypeError: 'instancemethod' object has no attribute '__getitem__'。没有理由相信他们实现了__setitem__,但不是__getitem__。无论如何,现在尝试并得到TypeError: 'instancemethod' object does not support item assignment。 -
明白了。我记得让这个工作,但已经有几年了。我会尝试
o.SetDefaultFilePath(...)或o.PutDefaultFilePath(...)或o.put_DefaultFilePath(...)。 -
@MichaelGunter 是的,通过查看
dir(o),我刚刚明白了。 -
哈!如有疑问...