day26

多态与多态性

'''
多态指的是一种是事务的多种状态
在OOP中,多个不同类型的对象可以响应同一个方法,并产生不同结果
多态性:多态动态绑定(大多在继承的背景下使用)
静态多态性:任何类型都可以运用运算符
动态多态性:
'''



class Animal():
   pass

def func(animal):
   animal.talk()

class Cat(Animal):
   def talk(self):
       print('say miaomiaomiao')

cat1 = Cat()
func(cat1)

#鸭子类型就是典型的多态,多种不同类型,使用方法一样

封装

#在python中用双下划线开头的方式将属性隐藏(封装)起来
__name会自动变形成_类名__name
#封装用于提高安全性,隔离复杂度
#变形仅在定义阶段执行一次
class People:
   __gender = '男'
   def __init__(self,name,age):
       self.name = name
self.age = age
       self.ls = []
   
   #访问器
   def get_gender(self):
       return __gender

   #设置器
   def set_gender(self,new_gender):
       self.__gender = new_gender

#封装的特性

#特性
class People:
   __gender = '男'
   def __init__(self,name,age):
       self.name = name
self.age = age
       self.ls = []
   
   #访问器
   @property
   def gender(self):
       return __gender

   #设置器
   @gender.setter
   def gender(self,new_gender):
       self.__gender = new_gender
   
   #删除器
   @gender.deleter
   def gender(self)
  del self.__dict__['_People_gender']

常用内置函数

#检查obj是否是cls对象,返回值是bool类型,Ture|False
isinstance(obj,cls)
tag = isistance(1,int)
#检查sub是否是super类的派生类
issubclass(sub,super)

#转换字符串:__str__在对象转为字符串是执行
#print()会在内部自动调用__str__
#子类可以覆盖__str__来自定义转换内容
class People:
   def __init__(self):
       print('你好')
       
   def __str__(self):
return str
   

反射

#面向对象中的反省指的是,一个对象必须具备发现自身属性以及修改自身属性的能力
#一个对象在设计初期,可能考虑不够周全后期需要删除和修改的已经存在的属性或增加属性
hasattr 判断是否存在某个属性
getattr 获取某个属性的值
setattr  设置或修改某个属性的值
delattr 删除某个属性值

class

def building():
   print('毛坯房建造完成......')
   
decorations = ['路径']
   
class Table:
   pass
class Light:
   pass
class Bed:
   pass

构造函数和析构函数

#初始化,实例化对象时执行
__init__

#当对象被删除前,会自动调用该方法,该函数不是用来删除对象的
#当对象在创建时,开启了一些不属于解释器的资源,例如打开一个文件,必须保正当对象被删除时,同时关闭额外资源,简单的来说就是销毁所有数据
__del__

动态导入

import improtlib

a = input('请输入要导入的模块的名称')
improtlib.import_module(a)
print(a)
原文地址:https://www.cnblogs.com/zhuqihui/p/10896775.html