使用2个名称使python类方法可调用

使用2个名称使python类方法可调用,python,class,Python,Class,有一个现有的类,我希望它的一些函数可以使用不同的名称调用,这样它就符合一个新的接口 我似乎可以通过以下两种方式之一实现这一点: class Test: def __init__(self): self.fun2 = getattr(self, "fun1") def fun1(self): print("Hello from func1") 我本人更喜欢选择1 是否有一种方法通常比另一种更受欢迎?或者我没有想到的第三种方法可能?不会也起作用吗?

有一个现有的类,我希望它的一些函数可以使用不同的名称调用,这样它就符合一个新的接口

我似乎可以通过以下两种方式之一实现这一点:

class Test:
    def __init__(self):
        self.fun2 = getattr(self, "fun1")

    def fun1(self):
        print("Hello from func1")
我本人更喜欢选择1


是否有一种方法通常比另一种更受欢迎?或者我没有想到的第三种方法可能?

不会也起作用吗?
self.fun2=self.fun1
第一种方法会导致一个引用循环,所以它不好。(是的,是的,我知道python有一个循环检测器……但是你的程序中有过引用循环吗?相信我,你想避免它们。)在第一种情况下,你的实例有一个函数作为属性,第二种只是在类上给方法加上别名。还应注意,第二个示例是在类名称空间中设置别名,而第一个示例是在实例空间中设置别名,实例空间可以有其他名称空间consequences@VinceW. 它会起作用的。另一个选项是覆盖
\uuuu getattr\uuuu
。我不认为有明确的答案。问题是你为什么需要它,听起来像是个XY问题。
class Test:
    def __init__(self):
        pass

    def fun1(self):
        print("Hello from func1")

    fun2 = fun1