Python中属性的字符串表示

Python中属性的字符串表示,python,attributes,dry,introspection,Python,Attributes,Dry,Introspection,有没有办法获取单个NamedTuple(或者其他类型的)属性的字符串表示形式 下面的代码片段实例化了一个pandas.Series,它使用str键匹配值的来源来索引一个值 如果以后要将attr\u 1的名称更改为some\u有用的属性\u name,并希望在熊猫系列索引中反映这一点,则以下代码需要进行两项更改 import pandas as pd from typing import NamedTuple class MyTuple(NamedTuple): attr_1: int

有没有办法获取单个
NamedTuple
(或者其他类型的)属性的字符串表示形式

下面的代码片段实例化了一个
pandas.Series
,它使用
str
键匹配值的来源来索引一个值

如果以后要将
attr\u 1
的名称更改为
some\u有用的属性\u name
,并希望在熊猫系列索引中反映这一点,则以下代码需要进行两项更改

import pandas as pd
from typing import NamedTuple

class MyTuple(NamedTuple):
    attr_1: int
    attr_2: float
        
mt = MyTuple(1, 1)
ser = pd.Series(data=[mt.attr_1], index=['attr_1'])
当序列实例化远离类定义时,人们通常会错过第二个更改

Pycharm等重构工具有些帮助,因为它们可以识别所有
attr_1
字符串。但是,如果字符串不是
attr_1
而是更常见的字符串,例如
level
或其他任何东西,那么识别要更改的正确字符串就变得相当繁琐

因此,与上面的最后一行代码不同,我希望

ser = pd.Series(data=[mt.attr_1], index=[repr(mt.attr_1)])
当然,除了
repr()
没有给出属性的名称,而是给出其内容的字符串表示

我还知道名为tuple.\u asdict()的方法。然而,这里的用例是一个只有选定属性进入系列而不是整个字典的用例

编辑: 通过以一种巧妙的方式将Enum和NamedTuple结合起来,可以实现一些功能吗

感谢您的帮助。

密切相关:密切相关: