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结合起来,可以实现一些功能吗
感谢您的帮助。密切相关:密切相关: