Python是否存在方法方法重载及是否可以不显示声明初始化方法

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

回到顶部