如何在Python中更改index()方法的名称?

如何在Python中更改index()方法的名称?,python,indexing,methods,python-import,Python,Indexing,Methods,Python Import,我说的方法 list.index() 这是我的密码 pt(dt, 'ml', proof.index(ds['pf']), p.index(dt['ps']), d.index(da['dp']), m.index(db['mc'])) 我想这样写,用“ix”代替“index” 我试过了 import index as ix 它不起作用(这有点明显)。甚至有可能做到这一点吗?是否有方法访问此方法并将其作为x、a、b等导入 有可能改变它吗?这对于内置类来说是不可能的(用户定义的类可以被修补,

我说的方法

list.index()
这是我的密码

pt(dt, 'ml', proof.index(ds['pf']), p.index(dt['ps']), d.index(da['dp']), m.index(db['mc']))
我想这样写,用“ix”代替“index”

我试过了

import index as ix
它不起作用(这有点明显)。甚至有可能做到这一点吗?是否有方法访问此方法并将其作为x、a、b等导入


有可能改变它吗?

这对于内置类来说是不可能的(用户定义的类可以被修补,内置类不能,至少不能以任何合理的方式,不涉及C层的可怕攻击);您可以将
list
子类化,将
ix
定义为
list.index
的别名,并将子类用于所有类型,而不是普通的
list
,但这样做很难看,也不值得

使用
列表
子类时,无需在整个代码库中进行更改,最接近的方法是使用较短的名称创建一个
attrgetter
,并使用该名称:

from operator import attrgetter

ix = attrgetter('index')  # Done once at global scope early in file and reused later

pt(dt, 'ml', ix(proof)(ds['pf']), ix(p)(dt['ps']), ix(d)(da['dp']), ix(m)(db['mc']))

但坦率地说,这也不是特别好看(而且在运行时启动会比较慢,因为它会禁用方法调用优化);只需拼写出
索引
,并使代码可读。

这对于内置类来说是不可能的(用户定义的类可以被修补,内置类不能,至少不能以任何合理的方式,不涉及C层的可怕攻击);您可以将
list
子类化,将
ix
定义为
list.index
的别名,并将子类用于所有类型,而不是普通的
list
,但这样做很难看,也不值得

使用
列表
子类时,无需在整个代码库中进行更改,最接近的方法是使用较短的名称创建一个
attrgetter
,并使用该名称:

from operator import attrgetter

ix = attrgetter('index')  # Done once at global scope early in file and reused later

pt(dt, 'ml', ix(proof)(ds['pf']), ix(p)(dt['ps']), ix(d)(da['dp']), ix(m)(db['mc']))

但坦率地说,这也不是特别好看(而且在运行时启动会比较慢,因为它会禁用方法调用优化);只需拼写出
索引
,并使代码可读。

为什么要这样做?全局更改内置类型的方法名称的唯一方法是编辑Python本身的源代码,然后重新编译它。这将是完全疯狂的,因为不知道标准库中有多少地方使用该方法的原始名称。@jasonharper:好吧,你不必更改它,你只需为原始名称创建一个别名,这样两者都可以使用。还是不值得麻烦。哦:(我认为这会更容易。无论如何,非常感谢!你为什么要这样做?全局更改内置类型的方法名称的唯一方法是编辑Python本身的源代码,然后重新编译。这将是完全疯狂的,因为不知道标准库中有多少地方使用具有原始名称的方法@jasonharper:好吧,你不必更改它,你只需为原始名称制作一个别名,这样两者都可以使用。仍然不值得费心。哦:(我认为这会更容易。无论如何,非常感谢你!嗯,你是对的。我只是这方面的新手,我认为这是一个好主意。从技术上讲,如果我学习C,我可以重写整个python源代码吗?我的意思是,这很疯狂,但从技术上来说我可以?@JesserKano。是的。编写它的人就是这么做的。它实际上为mos编写得非常好t部分。有了相当好的C知识,你只需要几分钟就可以找到
index
命名的结构并对其进行重命名。重新编译需要一段时间。你是对的。我只是这方面的新手,我认为这是一个好主意。从技术上讲,如果我学习C,我可以重写整个python源代码吗?我的意思是,这很疯狂,但不是在技术上我可以?@JesserKano。是的。编写它的人就是这么做的。事实上,它在大多数情况下都写得非常好。有了良好的C语言知识,你只需要几分钟就可以找到
index
命名的结构并对其进行重命名。重新编译需要更长的时间