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__方法,也可以正常创建对象,并且调用其方法,正常执行程序

原文地址:https://www.cnblogs.com/qq931399960/p/11116496.html