3

我想在 Python 中使用名称错位的名称,以避免子类访问该属性。我知道我可以这样做_classname__attributename,但根据文档,“如果转换后的名称非常长(超过 255 个字符),则可能会发生实现定义的截断。如果类名仅包含下划线,则不进行任何转换。” 我特别担心“实现定义”部分。似乎也有一些微妙之处。是否有标准库函数可以将类名加上属性名转换为其名称错位等价物?

背景

我想装饰一个类的文档字符串,以便能够说明它是否需要某些可选的外部依赖项,以便可以在 doctest 运行器中自动启用或禁用它(完整详细信息在https://github.com/sympy/sympy /拉/1969)。

理想情况下,要做到这一点,您应该向文档字符串添加一个属性,但 Python 不允许向字符串添加属性。因此,您必须向该类添加一个属性。我需要的是一个不被子类继承的属性,因为文档字符串不是继承的。否则,子类的文档字符串将被错误地修饰。我最初的解决方案是使用一个描述符对象来禁用子类的属性,但是当名称修改之类的东西已经存在并且基本上已经这样做时,这有点复杂,除了这个微妙之处。

4

0 回答 0