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是否存在方法方法重载及是否可以不显示声明初始化方法的更多相关文章
- 两种方法:VS2008下C++窗体程序显示控制台的方法——在QT程序中使用cout和cin
老蔡写了一个基于QT的窗体程序,而过去写的类的调试信息都是用cout显示的,苦于窗体程序无法显示cout信息很多信息都看不到,于是就想到让控制台和窗体同时显示.显示控制台方法如下 1.项目(或者叫“工 ...
- Java 中方法的重载
问: 什么是方法的重载呢? 答: 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方法名称都为 show , ...
- Java中方法的重载
Java 中方法的重载 问: 什么是方法的重载呢? 答: 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方 ...
- python面向对象的基础语法(dir内置函数、self参数、初始化方法、内置方法和属性)
面相对象基础语法 目标 dir 内置函数 定义简单的类(只包含方法) 方法中的 self 参数 初始化方法 内置方法和属性 01. dir 内置函数(知道) 在 Python 中 对象几乎是无所不在的 ...
- JAVA课堂动手动脑实验--方法的重载定义,组合数的递归算法
1. 请看以下代码,你发现了有什么特殊之处吗? 答:此程序中的两个方法虽然方法名一样,但是参数的数据类型不同: 这是方法的重载,方法的重载需要满足的条件: 1)方法名相同: 2)参数类型不同,参数个数 ...
- JAVA方法的重载(overload)和覆盖(override)
方法的重载(overload)和覆盖(override) 有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数.例如我们最常用的System.out.println() ...
- Java学习笔记十二:Java中方法的重载
Java中方法的重载 什么是方法的重载呢? 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方法名称都为 s ...
- iOS学习之Object-C语言继承和初始化方法
一.继承 1.面向对象的三大特性:封装,继承,多态. 面向对象提供了继承特性.把公共的方法和实例变量写在父类里,子类只需要写自己独有的实例变量和方法即可.继承既能保证类的完整,又能简化代码. ...
- [swift]初始化方法自己主动继承
子类默认不会继承父类的初始化方法,然而,假设某种条件满足的话.父类的初始化方法还是能够继承给子类.在通常情况下,这意味着你不必复写父类的初始化方法.在安全的前提下能够以最低的代价继承父类的初始化方法. ...
随机推荐
- Java: For循环那些事
title: Java-for循环那些事 toc: true date: 2019-05-21 10:28:44 categories: Java tags: - Tips --- Java for循 ...
- TensorFlow中CNN的两种padding方式“SAME”和“VALID”
来源 dilation_rate为一个可选的参数,默认为1,这里我们可以先不管它. 整理一下,对于"VALID",输出的形状计算如下: new_height=new_width=⌈ ...
- vue下载后台传过来的乱码流的解决办法
后台返回的乱码流 解决办法: 请求方式用的是axios,主要加关键的 {responseType: 'blob'} axios封装 export function postDownload(url, ...
- Elasticsearch索引操作
一.索引初始化操作 插件推荐使用head.marvel (收费) 1.1 创建新索引 curl -XPUT 'http://localhost:9200/test' -d ' { "sett ...
- PAT乙级1025
题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805296180871168 题解 第一遍没有全部AC,最后1个 ...
- 打成jar包运行,依然可以找到指定路径的xml
今天遇到一个问题,解决了就想着记下来 无效: getClass().getClassLoader().getResource("ehcache.xml").getPath() 有效 ...
- UVa10615 Andy's First Dictionary(集合set)
这道题主要用到了set容器和stringstream,用起来非常方便,我第一次见识到,觉得十分的炫酷…… 而且,竟然可以将自己写的单词按照字典序排列,真的太酷了. 下面是书上的代码,目前还处于初学状态 ...
- (十一)zabbix监控mysql
1)配置脚本获取mysql的各种参数 注意:脚本中定义host #vim /etc/zabbix/zabbix_agentd.d/mysql_status.sh #!/bin/bash MySQlBi ...
- css3正方体
使用animation和调整页面角度做出来 <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- Gym - 101908J Joining Capitals (斯坦纳树)
题意:二维平面上有n(n<=100)个点,其中k个是星星(k<=10),现要构造一棵树,每个星星对应树上的一个叶子结点,求最小花费(总花费为树上所有边的长度(两点间欧几里得距离)) 斯坦纳 ...