python基础--面向对象之继承
- # 继承是一种创建新类的方式,新建的类可以继承一个,或者多个父类,
- # 父类又可以称为基类或者超类,新建的类可以称为派生类,子类
- 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基础--面向对象之继承的更多相关文章
- python基础——面向对象编程
python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...
- python基础——面向对象进阶下
python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...
- python基础——面向对象进阶
python基础--面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 ...
- python基础——面向对象的程序设计
python基础--面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...
- Python 基础 面向对象之二 三大特性
Python 基础 面向对象之二 三大特性 上一篇主要介绍了Python中,面向对象的类和对象的定义及实例的简单应用,本篇继续接着上篇来谈,在这一篇中我们重点要谈及的内容有:Python 类的成员.成 ...
- python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)
python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...
- python之面向对象(继承)
类的继承 python之面向对象(继承) 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型关系. 需要注意的地方:继承语法 c ...
- Python自动化 【第七篇】:Python基础-面向对象高级语法、异常处理、Scoket开发基础
本节内容: 1. 面向对象高级语法部分 1.1 静态方法.类方法.属性方法 1.2 类的特殊方法 1.3 反射 2. 异常处理 3. Socket开发基础 1. ...
- python基础之类的继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法
一.什么是继承 继承是一种创建新的类的方式,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. 派生:子类继承了父类的属性,然后衍生出自己新的属性,如果子类衍生出的新 ...
随机推荐
- eclipse error pages 打红X的解决方法
建一个Maven项目转为web项目的时候,这里总有这么多文件,而且还会有一个Error Pages的错红的红叉,看着很不爽. 虽然项目中没有出现过错误,感觉是个错误,解决方法如下.原来这是eclips ...
- spring cache 几个注解解释
转自https://www.cnblogs.com/fashflying/p/6908028.html 从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管 ...
- keep-alive实现返回保留筛选条件及筛选结果
实现页面返回时,保留筛选条件和筛选结果 说明 . keep-alive 是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM 实现 结合router实现部分页面缓存 模板应用 ...
- js array map() 函数的简单使用
语法: array.map(function(currentValue,index,arr), thisValue) currentValue:必须.当前元素的值 index:可选.当前元素的索引值 ...
- 在linux安装php
去www.php.net找下载最新的版本 http://www.php.net/downloads.php 下载解压 # wget http://cn2.php.net/distributions/ ...
- 悲观锁,乐观锁以及MVCC
在上文中,我们探讨了MySQL不同存储引擎中的各类锁,在这篇文章中我们将要讨论的是MySQL是如何实现并发控制的.并发问题有三种,分别为: 读-读,不存在任何问题 读-写,有隔离性问题,可能遇到脏读( ...
- 排序(sort)
1.定义 排序 所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来.其确切定义如下: 输入:n个记录R1,R2,…,Rn,其相应的关键字分别为K1,K2,…,Kn. 输出:Ril ...
- JavaScript 的基本概念( ES5 )
语法 区分大小写 标识符 第一个字符必须是一个字母,下划线或者一个美元符( $ ).其他规则无论,最好按照通用的驼峰大小写. 注释 // 单行注释 /* 多行注释 */ 严格模式 在顶部添加如下代码 ...
- 我不熟悉的string类
我不常用的string函数 多的不说,直接上: assign函数 string& assign(const char *s); //把字符串s赋给当前的字符串 string& assi ...
- JavaWeb_(SSH论坛)_四、页面显示
基于SSH框架的小型论坛项目 一.项目入门 传送门 二.框架整合 传送门 三.用户模块 传送门 四.页面显示 传送门 五.帖子模块 传送门 六.点赞模块 传送门 七.辅助模块 传送门 帖子表与回复表 ...