# 继承是一种创建新类的方式,新建的类可以继承一个,或者多个父类,
# 父类又可以称为基类或者超类,新建的类可以称为派生类,子类
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. nginx第六天

    nginx正向代理 反向代理 Nginx正向代理配置 Nginx正向代理使用场景并不多见. 需求场景1: 如果在机房中,只有一台机器可以联网,其他机器只有内网,内网的机器想用使用yum安装软件包,在能 ...

  2. vue自定义指令,自动调用下载的方法

    directives: { clickDown: { inserted (el, binding, item) { if (+binding.value.item.fromId === +item.c ...

  3. 一次linux站点安装经验

    之前了解了一点,刚过完年回来,顺便研究了一下小程序. http://s.w7.cc/index.php?c=wiki&do=view&id=1&list=84 先申请了一个li ...

  4. C# 获取文件信息

    string fullPath = @"d:\test\default.avi"; string filename = Path.GetFileName(fullPath);//返 ...

  5. 窗体操作:ShowWindow(SW_HIDE)

    BOOL ShowWindow( int nCmdShow ); Return Value 作用: 如果窗口原来可见,则返回非零值:如果CWnd原来是隐藏的,则返回0   参数: Parameters ...

  6. JS框架_(JQuery.js)Tooltip弹出式按钮插件

    百度云盘 传送门 密码:7eh5 弹出式按钮效果 <!DOCTYPE html> <html > <head> <meta charset="UTF ...

  7. iOS13即将到来,iOS推送Device Token适配方案详解

    关于提前适配iOS13 苹果推送DeviceToken的通知 随着苹果iOS13系统即将发布,个推提前推出DeviceToken适配方案,以确保新版本的兼容与APP推送服务的正常使用.iOS13的一个 ...

  8. 利用angular4和nodejs-express构建一个简单的网站(五)—用户的注册和登录-HttpClient

    上一节简单介绍了一下利用angular构建的主路由模块,根据上一节的介绍,主页面加载时直接跳转到用户管理界面,下面就来介绍一下用户管理模块.启动应用后,初始界面应该是这样的: 用户管理模块(users ...

  9. Div内容居中

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. 【学习】mysql 时间戳与日期格式的相互转换

    1.UNIX时间戳转换为日期用函数: FROM_UNIXTIME() ); 输出:2006-08-22 12:11:10 2.日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP() Sel ...