python静态重载成员函数

时间:2018-02-03 13:15:14

标签: python oop

我是python的新手并且有一个简单的问题:是否有可能静态超载成员函数?例如:

class A:
    text=""
    def __init__(self, text):
        self.text = text

    def print(self):
        print (self.text)

    @staticmethod
    def print():
        print ("static")

a = A("test") 
a.print()

在这种情况下"静态"打印出来。如果存在具有相同名称的静态函数,是否无法调用成员函数?如果没有,我该把它叫做谁?

3 个答案:

答案 0 :(得分:3)

你没有超载方法;您正在使用静态方法替换它。您必须为静态方法选择一个不同的名称。

答案 1 :(得分:2)

python中没有函数重载,但您可以使用默认值来模拟重载函数:

class A:
    def __init__(self, text):
        self.text = text

    def print(self=None):
        if self is None:
            print('static')
        else:
            print(self.text)
a = A("test") 
a.print()  # prints "test"
A.print()  # prints "static"

答案 2 :(得分:0)

简单地说,在同一范围内有两个同名函数的意义上,Python中没有函数重载。

每个后续定义都有效地替换了之前所有相同名称的定义。

这适用于它们中的任何一个是否是静态的。

相关问题