Python:字符串到函数名,它是如何工作的?

Python:字符串到函数名,它是如何工作的?,python,python-3.x,Python,Python 3.x,在pandas中,您可以通过 #List unique values in the df['name'] column df.name.unique() Python如何将函数名转换为字符串参数“name” 数据帧覆盖以连接到属性解析。这允许从df.anything返回任意对象。实例在self.\u internal\u names\u set中维护“真实”属性名称的内部列表,并在self.\u info\u axis中维护列名列表 def __getattr__(self, name):

在pandas中,您可以通过

#List unique values in the df['name'] column
df.name.unique()
Python如何将函数名转换为字符串参数“name”

数据帧覆盖以连接到属性解析。这允许从
df.anything
返回任意对象。实例在
self.\u internal\u names\u set
中维护“真实”属性名称的内部列表,并在
self.\u info\u axis
中维护列名列表

def __getattr__(self, name):
    """After regular attribute access, try looking up the name
    This allows simpler access to columns for interactive use.
    """

    # Note: obj.x will always call obj.__getattribute__('x') prior to
    # calling obj.__getattr__('x').

    if (name in self._internal_names_set or name in self._metadata or
            name in self._accessors):
        return object.__getattribute__(self, name)
    else:
        if name in self._info_axis:
            return self[name]
        return object.__getattribute__(self, name)

消息来源是

它不是一个函数名,而是一个对象属性。有多种方法可以做到这一点。你是在特别问熊猫吗?@Barmar什么让你认为这是一个财产?属性是用描述符实现的:如果它是一个属性,那么将解析
DataFrame.name
。@wim我的观点是它像属性一样使用,而不是函数,它不是
df.name()
。啊,那么在这个上下文中正确使用的术语应该是“attribute”。属性有特定的含义。谢谢,维姆。你在评论中提到有多种方法可以做到这一点。还有其他的方法吗?我要求的是任何python类,而不是特定于pandas的类。还有一个类,它有第一个DIB,但可能很难正确实现。然而,在属性访问中更常见和流行的“拥有点”的方法是使用描述符。仔细阅读文档中的内容。