Python中属性的字符串表示

2024-04-25 14:25:20 发布

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

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

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

如果以后要将attr_1的名称更改为some_useful_attribute_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()没有给我属性的名称,而是它的内容的字符串表示

我也知道NamedTuple._asdict()方法。然而,这里的用例是一个只有选定属性进入系列而不是整个字典的用例

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

谢谢你的帮助


Tags: 实例字符串代码import名称pandasdata属性