面向对象 | 艾利克斯部落

分类目录:面向对象

以下是分类 面向对象 下的所有文章

面向对象-练习题

1.面向对象三大特性,各有什么用处,说说你的理解。 封装:在类中对数据的赋值、内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法。 继承:个类可以派生出子类,在这个父类里定义的属性、方法自动被子类继承。 多态:多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,指一个基类中派生出了不同的子类,且每个子……

异常处理

一、什么是异常 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下:   错误分成两种: 语法错误 逻辑错误   二、异常的种类 在python中不同的异常可以用不同的类型(python中统一了类与类型,类……

元类

一、储备知识:exec函数 exec函数有三个参数: 参数1:字符串形式的命令 参数2:全局作用域(字典形式),如果不指定默认就使用globals() 参数3:局部作用域(字典形式),如果不指定默认就使用locals() 来看下面的例子: g = {“x”: 1, “y”: 2} # 全局 l = {} # 局部 exec(“”” glo……

内置方法

一、isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls) 检查obj是否是类cls的对象 class Foo: pass obj = Foo() print(isinstance(obj, Foo))  # 输出:True s = “alex” print(isinst……

反射

反射:通过字符串映射到对象的属性,也适用于类。 意思就是将字符串映射为属性来使用,比如通过imput输入一个字符串,把输入的字符串当作属性来使用,需要通过反射来实现。 反射主要用到: hasattr:判断属性是否存在 getattr:获取属性值 setattr:修改属性值 delattr:删除属性值   来看下面的例子: cla……

绑定方法与非绑定方法

定义 在类内部定义的函数,分为两大类: 一、绑定方法:绑定给谁就应该由谁来调用,谁来调用就会把调用者当作第一个参数自动传入     1. 绑定到对象的方法:在类内定义的没有被任何装饰器修饰的     2. 绑定到类的方法:在类内定义的被装饰器classmethod修饰的方法 二、非绑定方法:没有自动传值这么一说了,就类中定义的一个普通工具……

封装

封装不是单纯意义上的隐藏。   一、封装中如何隐藏属性: 属性前加 “__” 就行了,这种方式只在类定义阶段发生, 如: __x = 1  class A: __x = 1 # 隐藏属性 __x def __foo(self): # 隐藏属性 __foo print(“from foo”) def bar(self): self……

多态与多态性、鸭子类型

一、多态 多态:同一种事物的多种形态。 动物有多种形态:人、猪、狗 # 多态:同一类实数的多种形态 import abc class Animal(metaclass=abc.ABCMeta): # 同一类事物:动物 @abc.abstractmethod def talk(self): pass class People(Animal)……

抽象类与归一化

讲这个之前我们先来了解一下Java的接口,算了,我知道  不说了。   抽象类:就是提取几个类中相同的部分到一个统一的类中,其他类再继承这个类(就是java中接口的概念),抽象类中定义统一的方法,但不具体实现,由继承他的子类进行具体实现。抽象类只能被继承,不能被实例化。 归一化:进行了抽象之后,在抽象类中定义的方法要求子类里必须……

组合

软件重用的重要方式除了继承之外还有另外一种方式,即:组合 组合指的是,在一个类中以另一个类的对象作为数据属性,称为类的组合。   组合与继承都是有效利用已有类的资源的重要方式。但是二者的概念和使用场景皆不同: 1.继承的方式 通过继承建立了派生类与基类之间的关系,他是一种“是”的关系,比如 白马是马,人是动物。 当类之间有很多相……