super()派生使用中的常见两个错误
"""
super()派生可以继承父类的属性
--super()派生继承父类的语法是:super().__init__()
--super().__init__()中的__init__()这个括号是不用传值self的
--super()的派生方法在Python2中是:super(自己的类名,self).__init__()
--super()的属性查找顺序,严格按照属性的查找顺序来做
先对象自己,然后再类,类中没有再到父类中找,父类中没有的话,才会报错。
"""
#第一种错误
class OldPerson:
school='oldboy'
def __init__(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
class OldStudent(): #此处缺少要继承的父类,导致解释器运行到super()报错,添加OldPerson父类即可解决该问题。
def __init__(self,name,age,sex,stu_id):
super().__init__(name,age,sex)
self.stu_id=stu_id
def choose_course(self):
print('%s is choosing course'%self.name)
return 'woaini '
stu1=OldStudent('luzhaoshan',25,'nan',2019)
print(stu1.__dict__)
print(stu1.choose_course())
报错信息如下:
Traceback (most recent call last):
File "E:/Python jieshiqi/9月份练习/9月6日/super()派生使用自己默写.py", line 32, in <module>
stu1=OldStudent('luzhaoshan',25,'nan',2019)
File "E:/Python jieshiqi/9月份练习/9月6日/super()派生使用自己默写.py", line 25, in __init__
super().__init__(name,age,sex)
TypeError: object.__init__() takes no arguments
#第二种错误
"""
super()派生可以继承父类的属性
--super()派生继承父类的语法是:super().__init__()
--super().__init__()中的__init__()这个括号是不用传值self的
--super()的派生方法在Python2中是:super(自己的类名,self).__init__()
--super()的属性查找顺序,严格按照属性的查找顺序来做
先对象自己,然后再类,类中没有再到父类中找,父类中没有的话,才会报错。
"""
class OldPerson:
school='oldboy'
def __init__(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
class OldStudent():
def __init__(self,name,age,sex,stu_id):
#super().__init__(name,age,sex) #调试中把这行代码注释掉,终止继承父类,下面遇到choose_course函数时也会报错,因为print中的定义name属性,只定义了stu_id属性
self.stu_id=stu_id
def choose_course(self):
print('%s is choosing course'%self.name) #把name 调整为stu_id 属性即可解决该问题。
return 'woaini '
stu1=OldStudent('luzhaoshan',25,'nan',2019)
print(stu1.__dict__)
print(stu1.choose_course())
报错信息如下:
Traceback (most recent call last):
{'stu_id': 2019}
File "E:/Python jieshiqi/9月份练习/9月6日/super()派生使用自己默写.py", line 34, in <module>
print(stu1.choose_course())
File "E:/Python jieshiqi/9月份练习/9月6日/super()派生使用自己默写.py", line 29, in choose_course
print('%s is choosing course'%self.name)
AttributeError: 'OldStudent' object has no attribute 'name'
super()派生使用中的常见两个错误的更多相关文章
- Python编码(encode)和解码(Decode)常见的两个错误
项目地址:https://git.io/pytips 0x07 和 0x08 分别介绍了 Python 中的字符串类型(str)和字节类型(byte),以及 Python 编码中最常见也是最顽固的两个 ...
- Laravel用post提交表单常见的两个错误
最近在自学Laravel,测试用post方法提交表单时碰到两个错误: 1.获取传入的值时,报错如下图所示: 在stackFlow找答案时各种解释都有,但认真读一下报错信息,意思大概是:获取Http传入 ...
- 10 种最常见的 Javascript 错误(频率最高)
本文是小编给大家收藏的JavaScript 中频度最高的 10 种错误,我们会告诉你什么原因导致了这些错误,以及如何防止这些错误发生.写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学 ...
- 最常见的HTTP错误
1. HTTP 500错误(内部服务器错误)对对HTTP 500错误的定义已经充分证明了这是一个最常见的HTTP错误. 一般来说,HTTP 500 错误就是web服务器发生内部错误时返回的信息. 例如 ...
- 大数据揭示的10个常见JAVA编程错误
初学者最常犯的编程错误是什么呢?有可能他们总是混淆等值(==)与赋值(=),或者 & 和 &&:也有可能是他们在循环中使用错误的分隔符(for (int i = 0, i &l ...
- python常见的编程错误
常见的编程错误 2.1 试图访问一个未赋值的变量,会产生运行时错误. 2.2 ==,!=, >=和<=这几个运算符的两个符号之间出现空格,会造成语法错误. 2.3 !=,<>, ...
- 常见的SQL错误和解决方法
前言 今天你会看到每个人——从新手到专家——在使用SQL时犯的各种常见错误.你不能永远避免犯任何错误,但是熟悉广泛的错误将帮助你在尽可能短的时间内解决这些错误. 注:在我们的例子中我们使用的是Orac ...
- 【C++】常见易犯错误之数值类型取值溢出与截断(3)
0. 前言 本节是“[C++]常见易犯错误之数值类型取值溢出与截断(1)” 的补充,主要探讨浮点型的取值溢出. 1. 相关知识 (1) 浮点型数据取值范围如下: 单精度型 float 3.4 * 1 ...
- 打码(C语言)常见粗心小错误 (前方高能,一定要点)
打码(C语言)常见粗心小错误 标签(空格分隔): 博客 自我介绍 本人学院 (http://sdcs.sysu.edu.cn/) 欢迎访问 本人学号 16340213 目录 打码C语言常见粗心小错误 ...
随机推荐
- Running serveral https server on a single IP address
Nginx 在一个IP上配置多个https server时,默认只会发送默认server name的证书.这是由ssl 协议本身行为导致的:先建立ssl connection,后发送http请求.即n ...
- Netflix 开源 Polynote:对标 Jupyter,一个笔记本运行多种语言
谈到数据科学领域的开发工具,Jupyter 无疑是非常知名的一种.它具有灵活高效的特点,非常适合进行开发.调试.分享和教学.近日,Netflix(奈飞)居然也玩起了跨界,他们开源了一个名为 Polyn ...
- day 37 CSS
参考博客:https://www.cnblogs.com/majj/p/9021419.html 1.CSS的三种链接样式: 行内链接(优先级最高) 内接样式 外接样式 <html lang=& ...
- 安卓开发之Java学习
Java之素数(这里附上王智超大佬的博客地址)https://blog.csdn.net/weixin_43862765/article/details/103311286
- 使用centos7安装PXE教程
PXE是一种电脑无盘(即没有硬盘)技术. 预启动执行环境(PXE)指的是那些使得IBM兼容计算机(经常是运行Windows系统)不需要硬盘或是启动软盘就能启动的方法. 通俗点讲就是配置好PXE以后可以 ...
- Scala函数式编程(四)函数式的数据结构 上
这次来说说函数式的数据结构是什么样子的,本章会先用一个list来举例子说明,最后给出一个Tree数据结构的练习,放在公众号里面,练习里面给出了基本的结构,但代码是空缺的需要补上,此外还有预留的test ...
- centos7更新php5.4到php5.6/php7
centos7系统yum安装的php版本为5.4. 因业务需求,开发可能需要php5.6环境. 本文应需而生,介绍从php5.4升级到php5.6. 如需更新到php7环境,步骤一样. 如果是线上应用 ...
- Python实现简单框架及三大框架对比
手撸web框架 简单的请求响应实现 要实现最简单的web框架,首先要对网络熟悉,首先HTTP协议是应用层的协议,只要我们给数据加上HTTP格式的响应报头,我们的数据就能基于socket进行实现了 im ...
- python脚本-简单读取有效python代码量
import os count=[0,0] paths=[] file_count=[0] def sum_code(path): if os.path.isfile(path): one_file( ...
- 机器学习实战书-第二章K-近邻算法笔记
本章介绍第一个机器学习算法:A-近邻算法,它非常有效而且易于掌握.首先,我们将探讨女-近邻算法的基本理论,以及如何使用距离测量的方法分类物品:其次我们将使用?7««^从文本文件中导人并解析数据: 再次 ...