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基础之类的继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法
一.什么是继承 继承是一种创建新的类的方式,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. 派生:子类继承了父类的属性,然后衍生出自己新的属性,如果子类衍生出的新 ...
随机推荐
- ln: /usr/bin/mysql: Operation not permitted
一.背景 前段时间装mysql,就遇到了ln: /usr/bin/mysql: Operation not permitted的错误,网上好多方法都过时了,下边是我的解决方法 执行 sudo ln - ...
- 弹出框 popover.js
弹出框 popover.js 为任意元素添加一小块浮层,就像 iPad 上一样,用于存放非主要信息. 弹出框的标题和内容的长度都是零的话将永远不会被显示出来. 插件依赖 弹出框依赖 工具提示插件 ,因 ...
- js 百分比显示页面加载进度
做东西遇到显示页面百分比的加载进度,不过里面的图片较多,看了别人的代码,才想到可以通过图片的加载显示加载的百分比,做一下笔记: html: <span id="percent" ...
- C# 写日志的方法
public void WriteLog(string msg) { string filePath = AppDomain.CurrentDomain.BaseD ...
- 【杂题】[CodeForces 1172D] Nauuo and Portals【构造】
Description 有一个n*n的网格,你需要在上面设置一些传送门,传送门由两个配对的格子组成,从一个进入会立刻从另一个同一方向出来. 现在有n个人从第1列出发向右走,位于(i,1)的人要走到(r ...
- [NOIP2014普及组T1]珠心算测验 - NTT
求数组有多少个数,恰好等于集合中另外两个(不同的)数之和? 注意到数集比较小,而且涉及到下标的加法,可以很自然地想到卷积 注意减去自己加自己的贡献 真是一道NTT练手好题 #include <i ...
- 使用jQuery创建可删除添加行的动态表格,超级简单实用的方法
使用jQuery动态的添加和删除表格里面的行,不多说了直接上代码. <!DOCTYPE html> <html> <head> <meta charset=& ...
- Java面试题收集(二)
四.Redis简介 redis为什么这么快 4.1 Redis数据类型 String hash 字典,适用于存储对象 list 安照String元素插入顺序排序,最新插入的最先显示.如热点数据 set ...
- Js基础知识(一) - 变量
js基础 - 变量 *大家对js一定不会陌生,入门很简单(普通入门),很多人通过网络资源.书籍.课堂等很多途径学习js,但是有些js基础的只是往往被大家遗漏,本章就从js变量类型来说一说js 变量类型 ...
- Javascript事件:this.value()和this.select()
1.JavaScript的this.value() <asp:TextBox ID="txtComment" runat="server" Text=&q ...