# 继承是一种创建新类的方式,新建的类可以继承一个,或者多个父类,
# 父类又可以称为基类或者超类,新建的类可以称为派生类,子类
class ParentClass1:
# 定义父类 1
pass
class ParentClass2:
# 定义父类 2
pass
class SubClass1(ParentClass1):
# 继承一个父类
pass
class SubClass2(ParentClass1,ParentClass2):
# 继承两个父类
pass
print(SubClass1.__bases__) # 查看父类
print(SubClass2.__bases__)
class Animal:
def eat(self):
print("%s is eating" %self.name)
def drink(self):
print("%s is drinking" % self.name)
def shit(self):
print("%s is shiting" %self.name)
def pee(self):
print("%s is peeing" %self.name)
# 子类可以使用父类的函数属性和数据属性
class Cat(Animal):
def __init__(self,name):
self.name = name
self.breed = "猫"
def cry(self):
print("喵喵叫")
class Dog(Animal):
def __init__(self,name):
self.name = name
self.breed = "狗"
def cry(self):
print("汪汪叫") c1 = Cat("小白家的黑猫")
c1.eat()
# 当前类中如果没有eat属性,就会去父类中找 c2 = Cat("小黑家的白猫")
c2.drink() d1 = Dog("胖子家的瘦狗")
d1.eat()
# 如果子类中有和父类中相同的属性,会优先使用子类中的属性(如果没有特殊说明)
# 因此,我们在开发的过程中,如果定义了一个类A,然后想重新建立一个类B,而且
# B的很多功能和A是相同的,我们只需要把A继承过来,然后在B中写一写不一样的功能
# 就可以了
# 注意当有继承的时候,一定要注意属性查找
class F:
def f1(self):
print("F.f1")
def f2(self):
print('F.f2')
self.f1()
class S(F):
def f1(self):
print("S.f1")
s = S()
s.f2()
# 我们来看一下代码执行过程
# s为一个对象--要执行f2方法--自己的类中没有--在父类中找--父类中有--
# 注意;父类中这个self是s--打印F.f2--然后执行f1,--先在自己类中找,--
# 找到了--打印S.f1
# 假如我们在子类中相用父类的方法,两种办法
# 一,直接用类名即:父亲名.方法名()
# 二,super()
class Animal:
def __init__(self,name,age,gender):
self.name = name
self.age = age
self.gender = gender class people(Animal):
def __init__(self,name,age,gender):
Animal.__init__(self,name,age,gender)
class Cat(Animal):
def __init__(self,name,age,gender):
# 这是不用传入对象本身,
# super()相当于super(Cat,self)
super().__init__(name,age,gender)
peo = people('wangcong',21,'mal')
cat = Cat('cat',2,'male')
print(peo.name,cat.name) # wangcong cat
# 最后总结一点,有关组合和继承,
# 1,人是动物,猫是动物,这就是继承关系,
# 2,学校有教室,学生有书本。这就是组合关系,
# 一个类在另一个类中,一个对象跟另一个对象有关系
# 简单看一下组合
list1 = list() # 我们之前说list是一个类,用来实例化一个对象
str1 = "hello" # 同样str1也是一个字符串对象
list1.append(str1)
print(list1)
# 此时,他们之间就是组合关系

python基础--面向对象之继承的更多相关文章

  1. python基础——面向对象编程

    python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  2. python基础——面向对象进阶下

    python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...

  3. python基础——面向对象进阶

    python基础--面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 ...

  4. python基础——面向对象的程序设计

    python基础--面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...

  5. Python 基础 面向对象之二 三大特性

    Python 基础 面向对象之二 三大特性 上一篇主要介绍了Python中,面向对象的类和对象的定义及实例的简单应用,本篇继续接着上篇来谈,在这一篇中我们重点要谈及的内容有:Python 类的成员.成 ...

  6. python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)

    python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...

  7. python之面向对象(继承)

    类的继承 python之面向对象(继承) 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型关系. 需要注意的地方:继承语法 c ...

  8. Python自动化 【第七篇】:Python基础-面向对象高级语法、异常处理、Scoket开发基础

    本节内容: 1.     面向对象高级语法部分 1.1   静态方法.类方法.属性方法 1.2   类的特殊方法 1.3   反射 2.     异常处理 3.     Socket开发基础 1.   ...

  9. python基础之类的继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法

    一.什么是继承 继承是一种创建新的类的方式,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. 派生:子类继承了父类的属性,然后衍生出自己新的属性,如果子类衍生出的新 ...

随机推荐

  1. Gym - 101170B British Menu (强连通缩点+dp)

    题意:求一个有向图上的最长路(每个强连通分量的点不超过5个) 首先对强连通分量缩点,暴力预处理出len[k][i][j]表示第k个强连通分量里的第i个点和第j个点之间的最长路径,设状态(k,i,f)表 ...

  2. OSM全球地图MBTiles,非postgresql方式。

    介绍: https://www.cnblogs.com/i-gps/p/3919475.html 下载和使用: https://openmaptiles.org/ OSM pbf转换: https:/ ...

  3. sed基础语法

    sed 太强大了 参考博客如下:https://www.cnblogs.com/ctaixw/p/5860221.html sed: Stream Editor文本流编辑,sed是一个“非交互式的”面 ...

  4. WebKitBrowser

    WebKit.net是对WebKit的.Net封装, 使用它.net程序可以非常方便的集成和使用webkit作为加载网页的容器. 首先 下载WebKit.net 的bin文件. 然后 新建一个Wind ...

  5. 浮点数的存储、类型转换知识点(面宝P34)

    以float a=1.0f为例: (int)a实际上是以浮点数a为参数构造了一个整型数,该整数的值是1: (int&)a则是告诉编译器将a当作整数看(并没有做任何实质上的转换),即读a的内存时 ...

  6. 什么是BFC(块级格式上下文)?

    ㈠什么是BFC? BFC 全称为 块格式化上下文 (Block Formatting Context) . 定义:浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, ta ...

  7. laravel发送邮件模板中点击的链接url动态生成

    邮件模板里有url链接,生成链接有三种方式(目前总结出这三种方式)这个链接可以是: http://www.xxx.com/active?id=xxx&token=xxx   这种形式是把url ...

  8. jquery delegate()方法 语法

    jquery delegate()方法 语法 作用:delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数.使用 delegate( ...

  9. JS实现深拷贝的几种方法

    引 如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝,自食其力. 此篇文章中也会简单阐述到栈 ...

  10. 广工2017校赛-F-- tmk找三角

    http://gdutcode.sinaapp.com/problem.php?cid=1056&pid=5 Description 有一棵树,树上有只tmk.他在这棵树上生活了很久,对他的构 ...