禁用设置python扩展对象的属性

Disable setting an attribute of python extension object

本文关键字:对象 属性 扩展 python 设置      更新时间:2023-10-16

我按照"定义新类型"指南创建了一个Python扩展。

有一点,它说使用PyGetSetDef[]为新类型的属性定义getterssetters。我已经这样做了,但这些getter和setter被忽略了,我不知道为什么。

目前,我有这样的代码:

import new_ext_obj
test = new_ext_obj.init("string") # sets the 'name' attribute of the new object
test.name # returns "string"
test.name = "what" #
test.name # returns "what"

我正在努力使test.name = "what"不起作用——我不希望这个属性在初始化后可以更改。然而,我的二传手被忽视了,所以我不知道如何做到这一点。有什么想法吗?

事实证明,您需要创建一个setattr函数,如下所述。