封装,多态,继承. super的方法,类的约束,

1.python的三大特性:python的三大特性,封装,多态,继承封装:函数 模块 类 对象多态 : python中默认支持多态继承:  python中的子类继承父类属性和方法

鸭子类型:   看着像鸭子,它就是鸭子python中处处都是鸭子    # 两者之间没有任何关系,但是都遵循着一个隐形的标准两个类中的鸭子类型:# 优点:1,统一标准,减少了词汇量#     2,两者之间没有任何耦合性,但是可以产生关系,其中一个的对象可以调用另一个类的方法# 其他例子 :index  pop  clear
2. super的用法:
    super(A类,self).方法 跳过A类,按照mro的顺序执行下一类的方法
      #可以执行非本类方法的方法必须在有继承关系的类中使用
class A:
    def eat(self):
        print(‘eat A‘)
class B(A):
    def eat(self):
        super(B,self).eat()     #跳过B类,按照mro的顺序执行0
        print(‘eat B‘)
obj = B()
obj.eat()
print(B.mro())  #[<class ‘__main__.B‘>, <class ‘__main__.A‘>, <class ‘object‘>]
#查看mro的顺序 类名+ . + mro +()
3. 类的约束:有两种方法第一种:raise Exception 抛出异常在父类中定义好子类要有的方法
class Payment:
    def pay(self,money):
        raise Exception(‘子类要定义pay的方法‘)
class A(Payment):
    def pay(self,money):      #Exception: 子类要定义pay的方法
        print(111)
class B(Payment):
    def zhifu(self,money):
        pass
def pay(obj,money):
    obj.pay(money)
obj1 = B()
pay(obj1,100)

第二种:抽象类 接口类 :制定一个规范,强制子类必须有pay方法,如果没有,在你实例化的时候就会报错
from abc import ABCMeta,abstractmethod
class A(metaclass=ABCMeta): #父类里面的抽象方法,子类一定要实现
    @abstractmethod#抽象方法    #强制子类执行eat,chi方法,没有就报错
    def eat(self,money):
        print(111)
    @abstractmethod
    def chi(self,money):
        pass
class B(A):
    def eat(self,money):
        pass
class C(A):
    def eat(self,money):
        pass
    def chi(self,money):
        print(111)
def eat(obj,money):
    obj.chi(money)
obj1 = B()
eat(obj1,100)


原文地址:https://www.cnblogs.com/shicongcong0910/p/10325049.html

时间: 2024-11-13 18:34:18

封装,多态,继承. super的方法,类的约束,的相关文章

多继承,封装,多态,super()方法,类的约束

多继承: 多继承就是一个类里有多个父类,父类也可以有多个爷爷类.从多个父类中继承属性跟方法. 类的分类: python2.2之前,只有经典类,pythont2.2之后出现了新式类 经典类:不继承object类,多继承遵循深度优先,从左至右,一条路走到底 class A:pass 新式类:继承object类,多继承遵循c3算法,mro方法. class A(object):pass python3x版本只有新式类. 鸭子类型:两个结构类似,有弱关联关系的函数或者类. mro方法:(面试会考) 计算

封装 多态 继承

封装  /**  * 所谓封装,就是将对象具有的成员变量和成员函数包装和隐藏起来,让外界无法直接使用,  * 被封装的成员只能通过某些特定的方式才能访问.   * 实现封装有两个步骤:  *   1.将不能暴露的成员隐藏起来,我们就不能让其在类的外部被直接访问或赋值.  *    实现方法是将该成员定义为私有的,在成员定义前加上private访问权限修饰符.  *   2.用公共方法来暴露对该隐藏成员的访问,可以给成员加上public修饰符,将该成员定义为公共的 public class tes

Javascript的对象封装和继承有哪些方法?优劣分别是什么?

1. 对象封装方法 1) 原始模式生成对象 直接将我们的成员写入对象中,用函数返回. 缺点:很难看出是一个模式出来的实例. function Stu(name, score) {             return {                 name: name,                 score: score             }         }         var stu1 = Stu("张三", 80);         var stu2 =

oldboy 21th day. I love Python. 面向对象之封装, 多态, 继承 三大特性

一, 主要内容: 接口类:( 只是在工作中, 书写的一种规范.) 抽象类: 用处: 在工作中, 如果你要是规定几个类, 必须有一样的方法, 你要是抽象类. 封装: 1, 将一些属性或者方法 (一些有用的信息) 放置在一个空间中. 2, 私有成员的封装:私有静态变量, 私有属性, 私有方法 特点: 在变量前+__双下划线, 并且在类外面,子类访问私有变量,私有方法 是访问不到的. 因为私有成员,在运行时, 都会变成: _类名__变量名 所以你在类的外部,或者派生类中都不可访问. 有些方法, 变量,

python学习小结5:封装、继承、多态

面向对象程序设计中的类有三大特性: 继承,封装,多态 继承:以普通的类为基础建立专门的类对象 封装:对外部世界隐藏对象的工作细节 多态:可对不同类的对象使用同样的操作 在Python中类的继承定义基本形式如下: #父类 class superClassName: block #子类 class subClassName(superClassName): block 说明:在定义一个类的时候,可以在类名后面紧跟一对括号,在括号中指定所继承的父类,如果有多个父类,多个父类名之间用逗号隔开. clas

java学习中,面向对象的三大特性:封装、继承、多态 以及 super关键字和方法的重写(java 学习中的小记录)

java学习中,面向对象的三大特性:封装.继承.多态 以及 super关键字和方法的重写(java 学习中的小记录) 作者:王可利(Star·星星) 封装     权限修饰符:public 公共的,private 私有的     封装的步骤:          1.使用private 修饰需要封装的成员变量.          2.提供一个公开的方法设置或者访问私有的属性              设置 通过set方法,命名格式:     set属性名();  属性的首字母要大写 访问 通过ge

c# 中面相对性的三个特点:封装,继承,多态, 以及c#中隐藏(new)和方法重写(override)和重载(overload)的区别

封装 1)封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问,通常有两种访问方式:set 设置,get 获取. 2)封装结果:存在但是不可见. 3) 访问修饰符 声明的可访问性                                 含义 public                                    访问不受限制. protected                              访问仅限于本类或者其子类(可以跨程序集). p

OC学习篇之---类的三大特性(封装,继承,多态)

之前的一片文章介绍了OC中类的初始化方法和点语法的使用:http://blog.csdn.net/jiangwei0910410003/article/details/41683873,今天来继续学习OC中的类的三大特性,我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今天就来看一下OC中类的三大特性: 一.封装 学习过Java中类的同学可能都知道了,封装就是对类中的一些字段,方法进行保护,不被外界所访问到,有一种权限的控制功能,Java

python3 类的属性、方法、封装、继承及小实例

Python 类 Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法. 对象可以包含任意数量和类型的数据. python类与c++类相似,提供了类的封装,继承.多继承,构造函数.析构函数. 在python3中,所有类最顶层父类都是object类,与java类似,如果定义类的时候没有写出父类,则object类就是其直接父类. 类定义 类定义语法格式如下: class ClassName:    <statem