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基础学习笔记——单继承的更多相关文章

  1. python基础学习笔记—— 多继承

    本节主要内容: 1.python多继承 2.python经典类的MRO 3.python新式类的MRO.C3算法 4.super是什么鬼? 一.python多继承 在前⾯的学习过程中. 我们已经知道了 ...

  2. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  3. Python 基础学习笔记(超详细版)

    1.变量 python中变量很简单,不需要指定数据类型,直接使用等号定义就好.python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前 ...

  4. python 基础学习笔记(1)

    声明:  本人是在校学生,自学python,也是刚刚开始学习,写博客纯属为了让自己整理知识点和关键内容,当然也希望可以通过我都博客来提醒一些零基础学习python的人们.若有什么不对,请大家及时指出, ...

  5. Python基础学习笔记(一)入门

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-chinese-encoding.html 3. http://w ...

  6. Python基础学习笔记(十三)异常

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-exceptions.html Python用异常对象(excep ...

  7. Python基础学习笔记(十二)文件I/O

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-files-io.html ▶ 键盘输入 注意raw_input函 ...

  8. Python基础学习笔记(十一)函数、模块与包

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-functions.html 3. http://www.liao ...

  9. Python基础学习笔记(十)日期Calendar和时间Timer

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-date-time.html 3. http://www.liao ...

随机推荐

  1. Redis key 键

    1.set key value    //设置.修改值 2.get key  //如果key不存在,返回nil,表示空. 3.type key   //返回key对应的value的数据类型 4.ren ...

  2. java 通过文件后缀名查找文件

    最近开发项目的时候需要过滤出一些指定的文件,所以有了以下的一些代码: /** **该类主要是过滤得到指定后缀名的文件 **/ public class DataFileFilter implement ...

  3. AutoIt上传非input控件方式的文件脚本

    AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动 ...

  4. win10 ,本地连接无法识别网络 ,无线正常,

    win10 ,本地连接无法识别网络  ,无线正常, 电脑诊断是:“此计算机上缺少一个或者多个网络协议” 1.手动设置ip                          失败 2.网卡卸载驱动   ...

  5. UVA 1153 Keep the Customer Satisfied 顾客是上帝(贪心)

    因为每增加一个订单,时间是会增加的,所以先按截止时间d排序, 这样的话无论是删除一个订单,或者增加订单,都不会影响已经选好的订单. 然后维护一个已经选好的订单的大根堆(优先队列),如果当前无法选择的话 ...

  6. 2018.5.9 Oracle数据库查询命令

    0.查询所有数据(最简单,但是时间很久) select * from emp; Result: EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- - ...

  7. 重新postgresql出现错误:Problem running post-install step. Installation may not complete correctly. The database cluster initialisation failed.

    以前正常使用的postgresql,今天出现问题:报*.dll错误.百度了一下,只能重新安装 . 在重新安装过程中报:Problem running post-install step. Instal ...

  8. linux必会命令-查询-tail

    先说一个tail使用的例子: tail -n 20 filename 说明:显示filename最后20行. Linux下tail命令的使用方法.linux tail命令用途是依照要求将指定的文件的最 ...

  9. 标签中的name属性和ID属性的区别

    标签中的name属性和ID属性的区别 2018年05月13日 10:17:44 tssit 阅读数:760   编程这么久,细想了一下,发现这个问题还不是很清楚,汗!看了几篇文章,整理了一下,分享下! ...

  10. 关于SpringMVC注解

    1.@RequestMapping RequestMapping是一个用来处理请求地址映射的注解(将请求映射到对应的控制器方法中),可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址 ...