一.类的绑定与非绑定方法 ''' 类中定义函数分为了两大类: 1. 绑定方法 特殊之处: 绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数自动传入 绑定给对象的方法: 在类中定义函数没有被任何装饰器修饰的情况下,默认就是绑定对象的 绑定给类的方法: 为类中定义函数添加一个装饰器classmethod,就是绑定类的 2. 非绑定方法 特殊之处: 非绑定方法就是一个普通函数,既不与类绑定又不与对象绑定,意味着类与对象都可以调用,但是无论谁来调用都是一个普通函数,没有自动传值效果 非绑定方法:…
多态 what: 同一个事物有不同的形态. 多态的目的:在不知道对象具体类型的情况下,统一对象调用方法的规范.(通俗讲,即规定实现同样功能的方法,一定要起同样的名字). 多态的表现形式之一就是继承,先抽象再继承. 多态的父类:定制一套统一的规范,子类中重写该方法,并使用这个方法名. python中不会强制限制子类一定要用父类规定的方法名,所以出现了抽象类. 抽象类 what:python中内置了abc模块中有抽象类   import abc 抽象类的作用:让子类必须遵循父类的编写规范. 抽象类不…
上节课复习:1.编程思想    面向过程        核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么后干什么        基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式        优点:复杂的问题流程化,进而简单化        缺点:可扩展性差 面向对象        核心是对象二字,对象是特征(变量)与技能(函数)的结合体        基于该思想编写程序就好比在创造一个世界,世界是由一个个对象组成的,在上帝眼里所有存在的事物都是对象,任何不存在的事物…
目录 绑定方法与非绑定方法 1.绑定方法 2.非绑定方法(staticmethod) isinstance和issubclass 内置函数 1.isinstance 2.issubclass 反射(面向对象高阶) 反射定义 4个可以实现反省的函数(内置函数) 反射使用场景 绑定方法与非绑定方法 1.绑定方法 ​ 绑定方法:绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数传入 ​ ​ 绑定给对象的方法: ​ 类中定义的函数默认就是绑定给对象的 ​ 绑定给类的方法: ​ 为类中定义的函数加上…
property property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值:就是把一个函数属性的访问方式变成像访问数据属性的方式一样. 我们首先来看一个对比效果 例一:在调用 bmi 函数的时候需要加括号的,可是我们往往需要另一种调用方法——不想加括号 class people(): def __init__(self, name, height, weight): self.name = name self.height = height self.weight = weig…
1.封装 (1)什么是封装? 封:属性对外是隐藏的,但对内是开放的: 装:申请一个名称空间,往里面装入一系列名字/属性 (2)为什么要封装? 封装数据属性的目的 首先定义属性的目的就是为了给类外部的使用者使用的 隐藏之后是为了不让外部使用直接使用,需要类内部开辟一个接口 然后让类外部的使用通过接口来间接的操作隐蔽的属性 精髓在于:我们可以在接口之上附加任意逻辑,从而严格严格控制使用者对属性的操作: 封装函数属性 首先定义属性的目的就是为了给类外部的使用使用的 隐藏函数属性是为了让使用者不直接使用…
目录 类的封装 类的property特性 类与对象的绑定方法与非绑定方法 类的封装 封装: 就是打包,封起来,装起来,把你丢进袋子里,然后用绳子把袋子绑紧,你还能拿到袋子里的那个人吗? 1.隐藏属性和方法,外部(类的外部)无法使用,内部(类额内部)可以使用,在类定义阶段就执行了,真的想引用,就使用_类名__属性名 封装分为两个层面: 第一个层面: 对象能拿到类的东西,但是类能拿到对象的东西吗? class Foo(): count = 0 print(count) f = Foo() print…
面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装.继承和多态 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的多少,在内存中只创建一份. 一.字…
作者:灵剑链接:https://www.zhihu.com/question/41006598/answer/148994582来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. bound和unbound方法是个很简单的概念.在许多语言当中,类似于a.b()这样的调用方法是一个整体,但在Python中,它其实是两部分:获取属性a.b,调用().所以也可以写成: c = a.b c() 跟直接调用a.b()是等效的.当a是某个类的实例,b是这个类的方法的时候,a.b的…
1.定义MySQL类 1.对象有id.host.port三个属性 2.定义工具create_id,在实例化时为每个对象随机生成id,保证id唯一 3.提供两种实例化方式,方式一:用户传入host和port 方式二:从配置文件中读取host和port进行实例化 4.为对象定制方法,save和get_obj_by_id,save能自动将对象序列化到文件中,文件路径为配置文件中DB_PATH,文件名为id号,保存之前验证对象是否已经存在,若存在则抛出异常,;get_obj_by_id方法用来从文件中反…