python基础学习笔记——单继承
1.为什么要有类的继承性?(继承性的好处)
继承性的好处:
①减少了代码的冗余,提供了代码的复用性
②提高了程序的扩展性
③(类与类之间产生了联系)为多态的使用提供了前提
2.类继承性的格式:单继承和多继承
#python2中无继承父类,称之经典类,python3中已默认继承object
python2:
class Person:
pass
python3:注意python3中不写默认继承类object,也不会报错。
class Persono(object):
pass
Python支持单继承和多继承。这点跟强类型语言是有所不同的。
python中继承的格式如下:用()
class 子类名B(父类名1,父类名2): #只要区别单继承还是多继承
子类体
------------代码演示---------------------------------------------------------------------
#父类Person
class Person(object):
def __init__(self,name ,age):
self.name = name
self.age = age
#子类,Studnent
class Student(Person):
def __init__(self,grade):
self.grade = grade
def p(self):
print("这是子类的方法")
3.子类继承了父类以后有哪些特性?(以单继承为例)
#父类Person
class Person(object):
country = "china"
__sex = "male"
def __init__(self,name ,age):
self.name = name
self.__age = age #父类的私有属性
#给私有属性提供get和set方法
def getSex(self):
return self.__sex
def setSex(self,sex ):
self.__sex = sex
def getAge(self):
return self.__age
def setAge(self,age):
self.__age = age
#父类的共有方法
def p(self):
print("这是父类的方法")
def p1(self):
print("这是父类的方法p1")
#父类的私有方法
def __p(self):
print("父类的私有方法")
#子类,Studnent
class Student(Person):
#1.子类默认继承了父类的构造方法__init__(),创建对象时默认调用.但是子类也可以有直接的构造方法__init()
#1.若子类有自己的init__()__方法,则该方法的参数个数要大于等于父类的个数,否则报错,因为会默认调用父类的。
def __init__(self, name, age, grade):#如果重写了__init__ 时,实例化子类,就不会调用父类已经定义的 __init_
Person.__init__(self, name, age) # 调用父类的构造方法,实现子类初始化,如果不调用要分别赋值
#super().__init__(name,age) #注意,也可以用super()调用父类的构造方法,但这个时候参数不用写self了。
self.grade = grade
#2.子类中,有一个和父类中相同名字的方法,在子类中的方法会覆盖掉父类中同名的方法,也叫方法的重写(override)
def p(self):
print("这是子类的方法")
#--------创建对象--------------------------------------------------------------------
stu = Student("tom",11,88)
#3.子类继承了父类的所有属性,但是私有属性不能直接调用,要通过方法。况且私有属性连父类自己都不能直接调用
print(stu.country,stu.name,stu.grade)
#print(stu.age,stu.sex) #调用私有属性报错,可以用 get/set方法调用私有属性。
print(stu.getAge(),stu.getSex())
#4.子类继承了父类的所有方法,同样私有方法不能直接调用(父类自己都不能直接调用,何况子类。)。
stu.p() #如果父类中和子类有同名的方法,那么默认调用子类的,子类覆盖父类的方法了。
stu.p1() #直接调用父类中有,子类没有的方法。
=======执行结果============================================================================
china tom 88
11 male
这是子类的方法
这是父类的方法p1
总结:1.子类在继承父类时,默认继承了父类的 __init__()方法,如果子类没有重写__init__方法,则在创建对象时默认调用父类的该方法。但如果重写了__init__ 时,实例化子类时,就不会调用父类已经定义的 __init_
2.因为子类默认继承了父类的构造方法,所以子类可以不需要重写__init__()方法。如果子类重写了自己的__init__()方法,那么子类该方法的参数个数要大于等于父类的个数(要包含父类的参数)。否则,报错。因为python中一个类中只能有一个init方法,不支持构造方法的重载。
3.注意:可以用super().的形式调用父类的构造方法,但这个时候参数不用写self了,注意跟直接用父类名.形式调用的区别。
4.子类继承了父类所有的属性,包扣私有属性,只是私有属性不能直接去调用,而是要通过get/set方法进行调用。
5.子类继承了父类的所有方法,同样 私有方法不能外部直接调用。
6.同样如果父类还有父类,那么子类也会继承父类的父类所有方法和属性(注意私有属性和 方法同样访问不了)
python基础学习笔记——单继承的更多相关文章
- python基础学习笔记—— 多继承
本节主要内容: 1.python多继承 2.python经典类的MRO 3.python新式类的MRO.C3算法 4.super是什么鬼? 一.python多继承 在前⾯的学习过程中. 我们已经知道了 ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Python 基础学习笔记(超详细版)
1.变量 python中变量很简单,不需要指定数据类型,直接使用等号定义就好.python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前 ...
- python 基础学习笔记(1)
声明: 本人是在校学生,自学python,也是刚刚开始学习,写博客纯属为了让自己整理知识点和关键内容,当然也希望可以通过我都博客来提醒一些零基础学习python的人们.若有什么不对,请大家及时指出, ...
- Python基础学习笔记(一)入门
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-chinese-encoding.html 3. http://w ...
- Python基础学习笔记(十三)异常
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-exceptions.html Python用异常对象(excep ...
- Python基础学习笔记(十二)文件I/O
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-files-io.html ▶ 键盘输入 注意raw_input函 ...
- Python基础学习笔记(十一)函数、模块与包
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-functions.html 3. http://www.liao ...
- Python基础学习笔记(十)日期Calendar和时间Timer
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-date-time.html 3. http://www.liao ...
随机推荐
- Java基础:(四)继承
一.访问权限 java中有三个访问权限修饰符private:protected:public和一个默认default(不加修饰符). 如果子类的方法覆盖了父类的方法,那么子类中该方法的访问级别不允许低 ...
- http://www.ibm.com/developerworks/cn/web/wa-lo-firefox-ext/index.html
<html> <head> <style> textarea{ width:800p ...
- SQL查询-约束-多表
一.SQL语句查询 1.聚合函数 COUNT()函数,统计表中记录的总数量 注:COUNT()返回的值为Long类型;可通过Long类的intValue()方法 ...
- struts2 ognl表达式访问值栈
1:简单的说,值栈是对应每一个请求对象的轻量级的数据存储中心,在这里统一管理着数据,供Action.Result.Interceptor等Struts2的其他部分使用,这样数据被集中管理起来而不凌乱. ...
- 如何快速构建CMBD系统-glpi
一.CMBD系统构建步骤 起初,开发这套CMBD系统是为了帮助朋友公司简化设备统计操作,以代替人工入库方式.举个例子,单位发放笔记本,或者设备更换了硬盘,都需要人工签到,手动输入统计,安装了CMBD系 ...
- layout_weight属性
layout_weight 某个控件text多行,第一行对齐,baselineAligned = "false" 可使控件对齐 weight 计算规则 剩余尺寸=父布局尺寸-子布局 ...
- SequenceFile和MapFile
HDFS和MR主要针对大数据文件来设计,在小文件处理上效率低.解决方法是选择一个容器,将这些小文件包装起来,将整个文件作为一条记录,可以获取更高效率的储存和处理,避免多次打开关闭流耗费计算资源.hdf ...
- oracle 、server和my sql 语法区别
1.总结Oracle .sqlserver和mysql中查询10-20条记录的写法 一: oracle数据库写法: 1:select * from (select rownum rn ,* from ...
- Linux下解压ZIP压缩包乱码问题
并不是所有ZIP文件都是乱码的而且导致解压失败,只有windows下压缩的ZIP在Linux中会出现这种情况.这是因为Windows和Linux下用的字符编码不同.Windows下的编码格式为GBK, ...
- 卓越管理的实践技巧(3)推动团队管理的要点 Facilitation Essentials for Managers
Facilitation Essentials for Managers 前文卓越管理的秘密(Behind Closed Doors)最后一部分提到了总结的13条卓越管理的实践技巧并列出了所有实践技巧 ...