zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    JavaScript继承详解 转
    Chinese Consumer and Websites
    【转载】C#防SQL注入过滤危险字符信息
    记一次在数据库中查询:“包含”或者“仅包含”某些商品的订单的方法
    IE 6 position: relative + li 问题
    【转】c# 位操作
    基于asp.net MVC的无刷新文件上传
    C++ 类继承内存布局
    美杜杉 主动防御最新版
    [转]COM 连接点
  • 原文地址:https://www.cnblogs.com/zhuqihui/p/10896775.html
Copyright © 2011-2022 走看看