zoukankan      html  css  js  c++  java
  • 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__方法,也可以正常创建对象,并且调用其方法,正常执行程序

  • 相关阅读:
    ip报文
    常见端口
    navicat15 破解版
    谷歌跨域设置
    CSS flex弹性布局来做 页面底部自适应:页面高度不足时,在底部显示;页面高度超出时,随页面滚动(亲测有效)
    phpstorm 2019 激活码
    aes cbc模式
    Vue的安装及使用快速入门
    从SVN服务器端彻底删除错误提交版本
    Nginx配置https和wss
  • 原文地址:https://www.cnblogs.com/qq931399960/p/11116496.html
Copyright © 2011-2022 走看看