Python是否存在方法方法重载及是否可以不显示声明初始化方法
一、python中是否存在方法重载
对java有了解的程序员都知道,java中存在构造方法重载和普通方法重载,重载指的是方法名相同,参数列表不同的多个方法。python中是否也支持这两种方法重载,测试一下
1、初始化方法能否重载
class User():def __init__(self,name):
self.name=name
def __init__(self,name,age):
self.name=name
self.age=age
user=User('me')
两个初始化方法,调用第一个初始化方法时出现如下异常,给初始化方法传递2个值,则可以正常编译,这说明,第二个__init__方法覆盖了第一个__init__方法,第一个__init__方法无效,交换以上两个__init__方法的位置,则创建对象时只能显示传递一个值(本例中说的传几个值,指的为开发者传递的参数,不包括python自动传递的参数self)
2、普通方法能否重载
class User():def __init__(self,name,age):
self.name=name
self.age=age
def do_something(self):
return ''
def do_something(self,name,age):
return name + age
user=User('name','12')
user.do_something()
实践证明,这也是不可以的,当出现同名的方法,第二个方法覆盖了第一个方法,第一个方法无效。
二、初始化方法内容是否可为空
答案是不行,如
class User():def __init__(self):
user=User()
错误提示“期望一个缩进块”,也就是说python把user开头的这一行当成了__init__的方法体内容。也就是说__init__方法后必须紧跟着有相对其缩进指定空格的行,简单讲就是__init__方法体内容不能为空。
三、是否可以不显示声明__init__方法
答案是可以
class User():def do_something(self):
print("do")
user=User()
user.do_something()
可以发现没有__init__方法,也可以正常创建对象,并且调用其方法,正常执行程序
以上是 Python是否存在方法方法重载及是否可以不显示声明初始化方法 的全部内容, 来源链接: utcz.com/z/387804.html