每日笔记

简介: 每日笔记

今天主要学习了4个部分:property一些魔法属性和魔法方法继承的一个深入理解闭包


今日重点(需要记忆的部分):


语法糖:其实就是让我们代码在书写的过程中,更加的简洁的一种语法,让我们在使用的时候更加的舒服。


使用存取器方法的好处

  1. 安全,隐藏实现细节
  2. 提供了精确的访问控制权限
  3. 可以对数据进行有效型控制


property两种用法

  1. 类属性:property(fget,fset,fdel,doc)
  2. 装饰器:
  1. @property  装饰get方法,在使用的时候,不需要再写get前缀了
  2. @xxx.setter     装饰set方法,注意使用的时候,一定要放在set方法后
  3. @xxx.delter      装饰del方法

魔法属性和方法

  1. __mro__(方法解析顺序):这个属性用来获取当前类的方法继承顺序(重点知道)在继承时,初始化,查找方法都是基于这个顺序实现的
  2. __call__                    
  1. callable()函数  用来判断对象是不是可调用的
  2. python中,对象分为可变对象和不可变对象;从调用角度区分:可调用对象和不可调用对象。
  3. 函数是可调用的。
  4. 默认情况下,一个自定义的实例对象是不可调用对象,如果想让这个自定义的实例对象变成可调用的,需要实现__call__方法。
  5. 看它是不是可调用的,在对象面加一个括号,如果可以将,那么就是可以调用的。
  6. 如果自定义类实现了__call__方法,那么对象在调用时会自动调用__call__方法。这种对象称为仿函数。
  1. 继承的深入了解

钻石继承:

       问题:在使用父类名初始化的时候,会出现顶层类被初始化多次的现象。

       解决办法:利用super方法super(CurrentClassName,self).__init__(*args, **kwargs)这种有点繁琐,我们使用下面的简化方法

super().__init__(*args, **kwargs)

简单的进行一个分析:

解决钻石继承的问题,就是将所有的父类都继承一遍,但是所有的父类都只初始化一遍,也就是说要将所有的类都走一遍,而且每个类只走一遍,用老师的话来说就是将箭头的最开始一端和最尾端,拉直了,它必须是一条直线。


闭包:

       1.在一个外函数中定义一个内函数

2.在内函数中,使用外函数的局部变量

3.外函数返回内函数的引用


其他知识点:

nonlocal

nonlocal相当于global

内函数想修改外函数的变量,需要申明一下,nonlocal

当这个变量是不可变对象的话,引用改变了,所以需要申明

当这个变量是可变对象的话,引用没有发生改变,只是改变了里面的东西。

nonlocal找的是非本地变量,就是不是内函数的变量,外函数的变量

global是找到全局变量,在所有函数的外部。

魔法属性和魔法方法

__doc__文本字符串

__module__这个属性用来获取成员的所属模块

__class__这个属性可以用来获取一个对象的所属类

__bases__这个属性用来获取当前类的直接父类


__dict__是一个字典


__setitem__

__getitem__

__delitem__

上面的三个是为了实现,自定义对象支持下标方式访问,得是容器类型

__len__实现该方法,自定义的类实例对象可以通过len()方法获取长度

__str__实现自定义类的自定义输出格式


相关文章
|
编译器 C++
学习C++笔记403
C++ 多线程
80 0
|
Linux C++
学习C++笔记392
C++ 信号处理
81 0
|
C++
学习C++笔记374
C++ 模板
89 0
|
iOS开发 C++
学习C++笔记329
C++ 文件和流
87 0
|
算法 C++
学习C++笔记322
C++ 接口(抽象类)
90 0
|
编译器 C++
学习C++笔记320
C++ 数据封装
80 0
|
C++
学习C++笔记313
C++ 数据抽象
96 0
|
存储 编译器 C++
学习C++笔记303
C++ 多态
99 0
|
安全 C++
学习C++笔记256
C++ 日期 & 时间
108 0
|
存储 C++
学习C++笔记252
C++ 日期 & 时间
102 0