• 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)
  • 相关阅读:
    Roslyn 语法树中的各种语法节点及每个节点的含义
    WPF 使用 WindowChrome,在自定义窗口标题栏的同时最大程度保留原生窗口样式(类似 UWP/Chrome)
    在制作跨平台的 NuGet 工具包时,如何将工具(exe/dll)的所有依赖一并放入包中
    如何在 .NET 库的代码中判断当前程序运行在 Debug 下还是 Release 下
    像黑客一样!Chrome 完全键盘操作指南(原生快捷键 + Vimium 插件)
    .NET 使用 XPath 来读写 XML 文件
    XML 的 XPath 语法
    WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆)
    Windows 10 四月更新,文件夹名称也能区分大小写?
    C#/.NET 中推荐的 Dispose 模式的实现
  • 原文地址:https://www.cnblogs.com/zhuqihui/p/10896775.html
Copyright © 2020-2023  润新知