python面向对象的三大特征--继承

#什么时候用继承
#1.当类之间有显著不同,并且较小的类是较大的类所需的组件时,用组合比较好
#2.当类之间有很多相同的功能,提供这些共同的功能做成基类,用继承比较好

class Dad:

    "这个是爸爸类"
    money=10

    def __init__(self,name):
        print("爸爸")
        self.name=name

    def hit_son(self):
        print("%s 正在打儿子" %self.name)

class Son(Dad):
    money = 10000000
    #当子类中有跟父类属性同名的数据属性或者方法属性时会覆盖父类中的属性,当子类中没有时会优先调用父类方法
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def hit_son(self):
        print("来自儿子类",self.name)

#print(Son.money)
#Son.hit_son()

# print(Dad.__dict__)
# print(Son.__dict__)

# s1=Son("TANG")
#
# print(s1.name)
# print(s1.money)
# s1.hit_son()

#现在子类查找自己的init方法

s1=Son("alex","18")
s1.hit_son()

# print(Son.money)
# print(Dad.money)
#使用abc模块实现子类必须实现基类的方法
import abc#接口继承

class All_file(metaclass=abc.ABCMeta):    @abc.abstractmethod

    def read(self):        pass

    @abc.abstractmethod    def write(self):        pass

#接口:接口就是一个函数,接口继承:定义一个基类,基类当中把自己的方法定义成基类函数,来一个子类继承他就必须实现基类的方法#使用abc模块实现子类必须实现基类的方法

class Disk(All_file):

    def read(self):        print("disk read")

    def write(self):        print("disk write")

class Cdroom(All_file):    def read(self):        print("cdrom read")

    def write(self):        print("cdrom write")

class MEm(All_file):    def read(self):        print("Mem read")

    def write(self):        print("Mem write")

    def sad(self):        print("jjj")

m1=MEm()# m1.sad()# m1.read()# m1.write()

#继承顺序:1.python2:分经典类和新式类 经典类指不继承基类object的类,新式类继承基类object的类2.python3:默认为新式类即默认继承object基类3.经典类默认是深度有限的继成顺序,新式类默认是广度优先的继承顺序,新式类中可以使用类属性.__mro__查看类的继承顺序
class A:    def test(self):        print("A")

#当类是新式类是继承查找顺序为广度优先

class B(A):    def test(self):        print("B")

class C(A):    def test(self):        print("C")

class D(B):    def test(self):        print("D")

class E(C):    def test(self):        print("E")

class F(D,E):    pass    # def test(self):    #     print("F")

f1=F()f1.test()#F--->D---->B ---->E---->C---->A

print(F.__mro__)#python到底是如何实现继承的,对于你定义的每一个类,python会计算出一个方法解析顺序(MRO)元祖,这个MRO#列表就是一个简单的,所有基类的线性顺序元祖,python3默认继承object基类

 

原文地址:https://www.cnblogs.com/tangcode/p/11287046.html

时间: 2024-11-09 19:39:42

python面向对象的三大特征--继承的相关文章

python 面向对象的三大特征之 继承

#继承 #object 基类,是python定义的所有类的父类 #经典类:不继承object的类称作经典类 #新式类:继承object的类称作新式类 #python 3.x统一为新式类 #经典类是类对象,新式类是类型对象 #经典类的继承是按照继承的顺序进行继承的 #新式类是按照修改的优先级来继承,越后修改优先级就越高. class Parent:                                 #定义一个父类 def __init__(self): self.age = 0 de

面向对象的三大特征:继承 封装 多态

面向对象: 面向对象专注于由谁来解决这个过程,而调用者无需关注对象实现的细节 编程特点: 出现了一个个的类,从类中拿到对象,通过对象直接解决问题 类:具有一系列相同属性(特征)和方法(行为)的个体的集合 称为类 类是一个抽象的概念,只能说类具有哪些属性而不能直接对类进行赋值 例如 人类有身高这个属性,但是不能说人类的身高是180 对象:从类中拿出具有具体属性值的个体,称为对象 对象是从类中拿出的一个具体的个体,需要对属性进行具体的赋值 例如 人类有身高这个属性,张三是人类的一个个体,就可以说张三

python面向对象的三大特征

1.封装: 封装就是对类和对象的成员访问进行限制,设定可以访问的方式和不可以访问的方式. 分类: 私有化的封装:当前类/对象种可以使用,类/对象外和子类/对象都不可以用 受保护的封装:当前类/对象和子类/子类对象可以使用门,类/对象外不可以使用 公共的封装:任何位置都可以访问! 例: class Father: #属性 sex = '男' age = 48 #私有化封装 #标志就是在属性或者方法前加两个下划线 __wife = '肤白貌美大长腿~' #受保护的封装 #加一个下划线 _money

C#面向对象的三大特征继承、封装、多态学习总结

1.基类和扩充类 (1)C#实现继承的方式:类继承和接口继承 (2)继承用冒号(:)表示.被继承的叫做父类或者基类,从基类继承的类叫扩充类,又叫派生类或子类.所有类的基类System.Object 声明方式:[访问修饰符]class 扩充类名称:基类名称 { } 若B继承自A,也可以使用强制转换操作将其转换为A对象.如:A b=(A)new B();此时,B对象将被限制为A对象的数据和行为,而无法再访问B对象中的数据和行为,除非A中的方法被B重载,将会访问B的方法.将B强制转换为A后,还可以将A

python 面向对象的三大特征之 封装

封装:私有化 class Person(object): def __init__(self): self.__gender = "man" #在类的属性名称前面加__ self.__age = 0 def __add_age(self): #私有的方法 self.__age += 1 def show_gender(self): return self.__gender def get_up(self): print("get_up") self.__add_ag

Java面向对象编程三大特征 - 多态

Java面向对象编程三大特征 - 多态 本文关键字:Java.面向对象.三大特征.多态多态是面向对象编程的三大特征之一,是面向对象思想的终极体现之一.在理解多态之前需要先掌握继承.重写.父类引用指向子类对象的相关概念,对继承还没有完全明白的同学可进传送门:Java面向对象编程三大特征 - 继承. 一.抽象类 在继承中,我们已经了解了子父类的关系以及如何对子父类进行设计,如果已经存在多个实体类,再去定义父类其实是不断的抽取公共重合部分的过程,如果有需要将会产生多重继承关系.在抽取整理的过程中,除了

面向对象的三大特征——封装、继承、多态

接触过面向对象的人都知道面向对象有三大特征,分别是封装.继承和多态.这三者分别指的是什么,为什么是这哥仨,使用他们有什么好处,我们来梳理一下. 封装 原则:隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处: ①将变化隔离. ②便于使用. ③提高重用性. ④提高安全性. Demo1: 比如一个学生类:他具有姓名和年龄两个属性,但是为了提高安全性和重用性,便于使用,我们将其封装起来. public class Student { private String name; private in

面向对象的三大特征中的 “继承” 和继承的几种方式

学习继承之前,要先了解什么是面向对象:(把相同的代码提取(抽象)出来归为一类,把公共的方法挂在 这个类的原型上 的一种编程思想(开发模式)) >>原型和原型链,在,面向对象,的那个随笔分类里有细说.<< 面向对象的三大特征:抽象.封装.继承.(多态) 抽象:提取类似的部分. 封装:归类的过程. 继承:子类拥有父类的属性或者方法,自己也有自己的一套属性和方法. /******************************** 下面开始这篇随笔的主题:继承 和 继承的几种方式****

面向对象的三大特征,封装、继承、多态的个人理解以及代码分析

面向过程:我们以前使用的是面向过程编程,你需要清除每个实现步骤,每个步骤每行代码都要仔仔细细的编写, 不知道过程就找不到结果,找到实现过程就可以得到实现结果. 例如: 我们在外打工租房子,我们需要了解每个每个房屋的出租信息,不然是找不到房子的. 面向对象:对象帮我们做事情,找到对应的对象我们就可以得到想要的结果.    例如: 我们找房子不在如此的繁琐,只要找到中介我们就不怕没有地方住,中介会帮你找房子,你只需支付对应的服务费即可. 面向对象的三大特征给我们带了巨大的好处,下面我们就来讲解一下.