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. Java基础:(四)继承

    一.访问权限 java中有三个访问权限修饰符private:protected:public和一个默认default(不加修饰符). 如果子类的方法覆盖了父类的方法,那么子类中该方法的访问级别不允许低 ...

  2. http://www.ibm.com/developerworks/cn/web/wa-lo-firefox-ext/index.html

    <html>    <head>        <style>                textarea{                width:800p ...

  3. SQL查询-约束-多表

    一.SQL语句查询     1.聚合函数         COUNT()函数,统计表中记录的总数量         注:COUNT()返回的值为Long类型;可通过Long类的intValue()方法 ...

  4. struts2 ognl表达式访问值栈

    1:简单的说,值栈是对应每一个请求对象的轻量级的数据存储中心,在这里统一管理着数据,供Action.Result.Interceptor等Struts2的其他部分使用,这样数据被集中管理起来而不凌乱. ...

  5. 如何快速构建CMBD系统-glpi

    一.CMBD系统构建步骤 起初,开发这套CMBD系统是为了帮助朋友公司简化设备统计操作,以代替人工入库方式.举个例子,单位发放笔记本,或者设备更换了硬盘,都需要人工签到,手动输入统计,安装了CMBD系 ...

  6. layout_weight属性

    layout_weight 某个控件text多行,第一行对齐,baselineAligned = "false" 可使控件对齐 weight 计算规则 剩余尺寸=父布局尺寸-子布局 ...

  7. SequenceFile和MapFile

    HDFS和MR主要针对大数据文件来设计,在小文件处理上效率低.解决方法是选择一个容器,将这些小文件包装起来,将整个文件作为一条记录,可以获取更高效率的储存和处理,避免多次打开关闭流耗费计算资源.hdf ...

  8. oracle 、server和my sql 语法区别

    1.总结Oracle .sqlserver和mysql中查询10-20条记录的写法 一: oracle数据库写法: 1:select * from (select rownum rn ,* from ...

  9. Linux下解压ZIP压缩包乱码问题

    并不是所有ZIP文件都是乱码的而且导致解压失败,只有windows下压缩的ZIP在Linux中会出现这种情况.这是因为Windows和Linux下用的字符编码不同.Windows下的编码格式为GBK, ...

  10. 卓越管理的实践技巧(3)推动团队管理的要点 Facilitation Essentials for Managers

    Facilitation Essentials for Managers 前文卓越管理的秘密(Behind Closed Doors)最后一部分提到了总结的13条卓越管理的实践技巧并列出了所有实践技巧 ...