如何检测无法通过对象名称语法?

2024-09-27 07:19:27 发布

您现在位置:Python中文网/ 问答频道 /正文

setattr将设置不能与常规属性访问一起使用的名称,即obj.name。你知道吗

>>> from types import SimpleNamespace
>>> my_instance = SimpleNamespace()
>>> setattr(my_instance, 'from', 0)  # works
>>> getattr(my_instance, 'from')
0
>>> my_instance.from
SyntaxError: invalid syntax

我如何检查这些名字,以避免使用它们?你知道吗


Tags: instancenamefromimport名称obj属性my
1条回答
网友
1楼 · 发布于 2024-09-27 07:19:27

在Python3上

import keyword

type(key) is str and key.isidentifier() and not keyword.iskeyword(key)

我们检查属性名是否是字符串,是否符合Python标识符的格式,是否不是关键字。isidentifier不排除关键字,因此需要额外的检查。你知道吗

(是的,isinstance是一个东西,但是我不想允许str子类。)

相关问题 更多 >

    热门问题