1.继承

class Animal:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex def eat(self):
print('{}正在吃东西~'.format(self.name))
# 继承(Animal)类
class Person(Animal):
def talk(self):
print('子类独有的方法!')
# 子类可以使用父类中的方法
p = Person('yhf',23,'女')
p.eat()

  子类也可以继承父类的属性:

class Animal:
a_type = '动物'
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex def eat(self):
print('{}正在吃东西~'.format(self.name))
# 继承(Animal)类
class Person(Animal):
def talk(self):
print('独有的方法!') p = Person('yhf',23,'女')
# 子类也可以继承父类的属性
print(p.a_type)

2.重构父类中的方法

class Animal:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex def eat(self):
print('{}正在吃东西~'.format(self.name))
# 继承(Animal)类
class Person(Animal):
def talk(self):
print('独有的方法!')
# 重写父类的方法
def eat(self):
print('人在吃饭')
# 子类和父类的方法重名,此时则执行子类中的方法,不执行父类中的方法
p = Person('yhf',23,'女')
p.eat()

  属性的重构:

class Animal:
a_type = '动物'
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex def eat(self):
print('{}正在吃东西~'.format(self.name))
# 继承(Animal)类
class Person(Animal):
a_type = '高级动物'
def talk(self):
print('独有的方法!') p = Person('yhf',23,'女')
# 子类和父类的属性重名,此时按照子类的属性,不按父类的属性
print(p.a_type)

  不完全重构(先执行子类的方法,在执行父类的方法)

class Animal:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex def eat(self):
print('{}正在吃东西~'.format(self.name))
# 继承(Animal)类
class Person(Animal):
def talk(self):
print('独有的方法!')
# 重写父类的方法
def eat(self):
Animal.eat(self) #在子类方法中调用父类方法中的重名方法,可以实现父类和子类中的同名方法都执行
print('人在吃饭') p = Person('yhf',23,'女')
p.eat()

  执行父类的构造方法:

class Animal:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex def eat(self):
print('{}正在吃东西~'.format(self.name))
# 继承(Animal)类
class Person(Animal):
# 在子类的构造函数中调用父类的构造函数,同时执行子类和父类的构造方法
def __init__(self,name,age,sex,efv):
Animal.__init__(self,name,age,sex)
self.efv = efv p = Person('wdc','','男',2019)
print(p.name,p.sex,p.age,p.efv)

  super方法:效果同上

class Animal:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex def eat(self):
print('{}正在吃东西~'.format(self.name))
# 继承(Animal)类
class Person(Animal):
# 在子类的构造函数中调用父类的构造函数,同时执行子类和父类的构造方法
def __init__(self,name,age,sex,efv):
# super方法:super(子类名,self).__init__(参数)或者super().__init__(属性)
# super(Person,self).__init__(name,age,sex)
super().__init__(name, age, sex)
self.efv = efv p = Person('wdc','','男',2019)
print(p.name,p.sex,p.age,p.efv)

python_面向对象——继承的更多相关文章

  1. OC面向对象—继承

    OC面向对象—继承 一.基本概念 程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量). ...

  2. 面向对象继承实例(a如何继承b)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. js面向对象继承

    前言 最近看到js面向对象这章节了,主要学习了原型和面向对象继承关系,为了梳理自己的知识逻辑,特此记录. js的面向对象 先说说我目前了解的js创建对象方法 1.写一个函数,然后通过new创建对象 2 ...

  4. Php面向对象 – 继承和重写

    Php面向对象 – 继承和重写 承受: php于,通过类.使用特殊的经营宗旨. 通过定义类,采用extends来表示当前的类对象继承该类的对象. 样例: class C { public  $p_c  ...

  5. Java面向对象 继承(下)

     Java面向对象   继承(下) 知识概要:               (1)抽象类 1.1 抽象类概述                            1.2 抽象类的特点       ...

  6. Java面向对象 继承(上)

       Java面向对象 继承 知识概要:         (1)继承的概述 (2)继承的特点 (3)super关键字 (4)函数覆盖 (5) 子类的实例化过程 (6) final关键字 (1)继承 ...

  7. js高级-面向对象继承

    一.工厂模式创建对象及优缺点 继承就是把公共的部分抽象出来作为父类,基类.吃饭,跑步等 var a = {}; //批量创建不方便,不能重复设置公共属性的代码 //工厂模式出现了,创建10个Cat对象 ...

  8. 面向对象 继承 抽象类 接口 static 权限修饰符

    Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...

  9. Python之面向对象继承和派生

    Python之面向对象继承和派生 什么是继承: 继承是一种创建新的类的方法.在Python中,新建的类可以继承自一个或多个父类.原始类称为基类或超类. 新建的类称为派生类或子类. Python中类的继 ...

随机推荐

  1. 路由器02---PandoraBox配置

    1.安装libc 什么是libc,这里贴一个gnu官方的解释 Any Unix-like operating system needs a C library: the library which d ...

  2. ARTS 第十周打卡

    Algorithm : 做一个 leetcode 的算法题 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: [&quo ...

  3. Counting Cliques(HDU-5952)【DFS】

    题目链接:https://vjudge.net/problem/HDU-5952 题意:有一张无向图,求结点数量为S的团的数量. 思路:如果不加一点处理直接用DFS必然会超时,因为在搜索过程中会出现遍 ...

  4. 《统计学习方法》极简笔记P4:朴素贝叶斯公式推导

    <统计学习方法>极简笔记P4:朴素贝叶斯公式推导 朴素贝叶斯基本方法 通过训练数据集 T={(x_1,y_1),(x_2,y_2),(x_N,y_N)...,(x_1,y_1)} 学习联合 ...

  5. 1262: 谁不爱打牌(Java)

    WUSTOJ 1262: 谁不爱打牌 转自 断-肠-人的博客 Java代码在文末 Description BobLee最近在复习考研,但是他也喜欢打牌(有谁不爱玩牌呢?).但是作为一名ACMER,斗地 ...

  6. Python之并行编程笔记

    概述: 非并发: 1 程序由单个步骤序列构成  2 包含独立子任务的程序执行性能低 并发:  1 异步.高效  2 分解子任务.简化流程与逻辑 进程process:1 一个程序的执行实例  2 每个进 ...

  7. docker 实践三:操作容器

    在学习了 docker 镜像的内容后,我们在来看 docker 的另一个核心点:容器. 注:环境为 CentOS7,docker 19.03 docker 的容器是镜像的一个运行实例.docker 镜 ...

  8. 怎样手写一个Object.create()方法

    Object.create()会将参数对象作为一个新创建的空对象的原型, 并返回这个空对象, 基于这个功能, 就有了下面这个Object.create()的手动实现: function _create ...

  9. (五)sturts2+spring整合

    一.Spring与Struts的整合 1.1:加入Spring的jar包.1.2:加入Struts的jar包.1.3:加入Struts与Spring的整合jar//struts2-spring-plu ...

  10. (八)shiro之jdbcRealm

    pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...