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语言常见粗心小错误 ...
随机推荐
- ArcGIS Server10.4安装教程
准备内容 安装环境:win10*64位专业版 安装文件:ArcGIS_Server_Ent_Windows_1041_150998.iso 破解文件:Lic10.4.1.ecp #安装Server前, ...
- 设计模式——代理模式(Proxy)
定义 为其他对象提供一种代理,以控制对这个对象的访问.代理对象在客户端和目标对象之间起到中介的作用.(结构型) 如果不知道代理模式,可能大家对代理服务器都不叫熟悉.代替服务器代替请求者去发一起对另一个 ...
- Spring事务笔记
1:在同一个类中,如果A方法有事务,B方法也有事务(propagation = Propagation.REQUIRES_NEW),如下代码所示: @Override@Transactionalpub ...
- JDK1.8新特性(一):stream
一.什么是stream? 1.概述 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. 这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管 ...
- 为什么坚果云Markdown值得使用?
值得使用说明是被认为有价值的,值得有两种意思的解释:1.有价值,有意义:2.价钱合适,合算:那么坚果云Markdown是否是人们值得使用的呢?下面就来看看坚果云Markdown到底是什么?为什么值得使 ...
- Git之GitFlow工作流
一. GitFlow 介绍 1.1 什么是 GitFlow GitFlow 是一种 Git 工作流,它是团队成员遵守的一种代码管理方案 . 1.2 GitFlow 常用分支说明 分支名称 分支说明 P ...
- 深入SQL Server 日期和时间的内部存储
在SQL Server的内部存储中,日期和时间不是以字符串的形式存储的,而是使用整数来存储的.使用特定的格式来区分日期部分和时间部分的偏移量,并通过基准日期和基准时间来还原真实的数据. 一,DateT ...
- 深入浅出Spring(二)
IoC概念 控制反转(Inversion of Control)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题. 它还有一个名字叫做依赖注入(Dependency Injection).Io ...
- java面试常见题目
JAVA相关基础知识面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用 ...
- PAT(甲级)2018年冬季考试
1152 Google Recruitment 思路:判断素数 #include<bits/stdc++.h> using namespace std; const int maxn = ...