## 多态

```python

OOP中标准解释:多个不同类型对象,可以响应同一个方法,并产生不同结果,即为多态

多态好处:只要知道基类使用方法即可,不需要关心具体哪一个类的对象实现的,

以不变应万变,提高灵活性/扩展性

多态,一般都需要一个管理多态的方法,方法的函数就是类的对象,在方法中通过点语法,调用每个对象的那个相同的方法.

```## 封装:

```python

封装,即是隐藏类中的一些不能被外界访问的方法、属性,封装语法就是在名称前加双下划线即可。

为什么封装之后,外界无法访问?

python中,是通过变形的方式实现封装的,在名称带有双下滑线的变量名字前添加单下划线_类名实现的。意味着可以通过在封装的属性、方法前加_类名,但是一般不会这么做。#***变形仅在类的定义阶段发生一次 后续再添加的带有双下划线的任何属性都不会变形 就是普通属性***

@property:

通过property用于访问私有属性的值

@property#getter # 用于访问私有属性的值 也可以访问普通属性

defsalary(self):return self.__salary@salary.setter#用来设置私有属性的值 也可以设置普通属性

defsalary(self,new_salary):

self.__salary =new_salary

@salary.deleter#用来设置私有属性的值 也可以删除普通属性

defsalary(self):#print("can not delete salary!")

del self.__dict__["_Teacher__salary"]#del self.__salary#再对私有属性进行增删改查的时候,会自动调用上面对于的装饰的方法。

property的另一种使用场景 计算属性

什么是计算属性 一个属性 它的值不是固定死的 而是通过计算动态产生的

```## 内置函数__str, del,

```python

类中的__str__

该方法在object中有定义 默认行为 返回对象类型以及地址<__main__.person object at>在将对象转为字符串时执行

在print时也会执行__str__,否则无法打印#***注意:返回值必须为字符串类型***

子类可以覆盖该方法来完成 对打印内容的自定义

例:classPerson:def __init__(self,name,age):

self.name=name

self.age=age#将对象转换为字符串时执行

def __str__(self):print("str run")return "my name is %s , age is %s" %(self.name,self.age)

p=Person("rose",20)

str(p)#str run

print(p)#str run my name is rose , age is 20

类中__del__: 也称之为析构函数(构造反义词,从有到无)

当对象被删除前会自动调用 该方法

声明时候会删除对象?1.程序运行结束 解释器退出 将自动删除所有数据2.手动调用del 时也会删除对象#假设要求每一个person对象都要绑定一个文件

classPerson:def __init__(self,name,path,mode="rt",encoding="utf-8"):

self.name=name

self.file= open(path,mode,encoding=encoding)#读取数据的方法

defread_data(self):returnself.file.read()def __del__(self):print("del run!")

self.file.close()

总结:__del__该函数用于 在对象删除前做一些清理操作

```## 反射(反省):

```python

面向对象中的反省 指的是,一个对象必须具备,发现自身属性,以及修改自身属性的能力;

一个对象在设计初期,可能考虑不够周全后期需要删除或修改已经存在的属性, 和增加属性

反射就是通过字符串来操作对象属性

涉及到的方法:

hasattr 判断是否存在某个属性

hasattr(对象,"字符串"):判断是否有跟字符串同名的属性名

getattr 获取某个属性的值

getattr(对象,"字符串"):获取跟字符串同名的属性值/方法名,这时可以用变量接受,存放的就是属性值或者方法的地址。可以通过该变量执行该方法。

setattr 新增或修改某个属性

delattr 删除某个属性

例:classMY_CMD:defdir(self):

os.system("dir")defipconfig(self):

os.system("ipconfig")

cmd=MY_CMD()whileTrue:

name= input("请输入要执行的功能:")ifhasattr(cmd,name):

method=getattr(cmd,name)print(method)

method()else:print("sorry this method is not exists....!")

```## 动态导入模块

```python

直接写import称之为静态导入 但这建立在一个基础上:提前已经知道有这个模块

动态导入 指的是 在需要的任何时候 通过指定字符串类型的包名称来导入需要的模块importimportlib

mk=importlib.import_module(m_name)#m_name 是一个代表模块路径的字符串,如:"build_house.my_decoration.Light"

mk 即导入成功的模块"""该方式常用在框架中 因为框架设计者不可能提前预知后续需要的模块和类

```

delstr函数python_Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...相关推荐

  1. python的shutil模块是内置的_Python之shutil模块11个常用函数详解,python内置函数是什么...

    Python之shutil模块11个常用函数详解,python内置函数是什么 shutil 是 Python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查 ...

  2. delstr函数python_python3全栈开发-内置函数补充,反射,元类,__str__,__del__,exec,type,__call__方法详解...

    一.内置函数补充 1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象 classFoo(object):passobj=Foo()print(isinstance(obj ...

  3. python内置函数分类_Python 69个内置函数分类总结

    1 内置函数 Python3解释器中内置了69个常用函数,属于底层的函数,它们到处可用.有些对大家来说比较熟悉,比如abs(), max(), sum()... 也有一些比较陌生,比如locals() ...

  4. python函数type的用意_Python内置函数Type()函数一个有趣的用法

    Python内置函数Type()函数一个有趣的用法 今天在网上看到type的一段代码 ,然后查了一下文档,才知道type还有三个参数的用法. 以前只是知道type可以检测对象类型.然后发现了一个有趣的 ...

  5. python3_函数_形参调用方式 / 不定长参数 / 函数返回值 / 变量作用域 / 匿名函数 / 递归调用 / 函数式编程 / 高阶函数 / gobal和nonlocal关键字 / 内置函数

    1.形参的调用方式 1. 位置参数调用 2. 关键词参数调用 原则: 关键词参数调用不能写在位置参数调用的前边 def test1(name, age):print("name:" ...

  6. python内置的读取文件函数_Python函数篇(3)-内置函数、文件处理(已更新)

    1.内置函数 上一篇文章中,我重点写了reduce.map.filter3个内置函数,在本篇章节中,会补充其他的一些常规内置函数,并重点写max,min函数,其他没有说明的函数,会在后面写到类和面向对 ...

  7. python常用内置函数总结-python常见的内置函数

    函数分为自定义函数和内置函数 python内置函数分类: 一.强制转换 int() / str() / bool() / list() / tuple() / dict() / set() 二.输入输 ...

  8. python中f点flush是什么函数_Python文件操作及内置函数flush原理解析

    1.打开文件得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 示例文件 '你好呀' 我是于超 嗯 再见 文件操作基本流程 f=open('chenli',encoding='ut ...

  9. python函数手册_python学习手册——内置函数(上)

    内置函数 前面使用过一些函数,有的同学会疑问我没有导入这个函数,为什么可以直接使用? 因为这些函数都是一个叫做builtins模块中定义的函数,而builtins模块默认在Python环境启动的时候就 ...

  10. python e_pythone函数基础(8)内置函数学习

    内置函数学习 # sorted # map # filter # max # sum # round # chr # ord # dir # bool # eval # exec # zip impo ...

最新文章

  1. 支付宝能扫码闪电开发票了!人均省时3分钟
  2. android 5.0主题风格研究
  3. ANSYS静力学分析时如何添加重力
  4. 我是一名黑客我也是一名程序员
  5. 用Way.EntityDB进行Entity Framework Core数据库建模
  6. java 过滤器 过滤文件中的文件_Java 使用FileFilter过滤器对文件进行搜索
  7. Node.js新手教程——怎样实现文件上传功能
  8. rar压缩包解开加密在线,忘记rar压缩包密码如何找回?
  9. 计算机动画相关论文,计算机动画论文.doc
  10. linux man page
  11. 计算机学院文化长廊,计算机学院2019年寝室文化节动员大会顺利召开
  12. project导出html格式,前端导出xslx.html
  13. voicewo在线语音识别转换jQuery插件
  14. php swfupload handlers.js,SWFUpload 文件上传插件常用的配置讲解
  15. 包装实训总结报告_包装设计实训心得体会
  16. LeetCode 27 合并两个排序的链表
  17. 织梦dedecms程序安全设置
  18. JS(ES5) 实现数组方法(迭代类型:evey、some、map、filter)的重构
  19. 鼠标悬停之hover选择器
  20. 心里元宇宙火热招幕中

热门文章

  1. 淘淘相关工具类【json,httpClient,id,FTP,exception,cookie(包括共享cookie的设置等)】
  2. php blog to explore
  3. Android App内存优化之图片优化
  4. 洛谷 1087——FBI树
  5. hdu 1257最少拦截系统(贪心)
  6. php内核一 一次请求与结束
  7. UVa 1225 Digit Counting
  8. BZOJ3434 [Wc2014]时空穿梭
  9. ImportError: cannot import name ‘moving_averages‘
  10. 分布式——ACID原则 CAP理论