我是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()
在这种情况下"静态"打印出来。如果存在具有相同名称的静态函数,是否无法调用成员函数?如果没有,我该把它叫做谁?
答案 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中没有函数重载。
每个后续定义都有效地替换了之前所有相同名称的定义。
这适用于它们中的任何一个是否是静态的。