面向对象,面向对象的3个装饰器

  • 面向对象 - 断浪狂刀忆年少 - 博客园 (cnblogs.com)
  • 通过函数实现面向对象编程
  • 面向对象的思维内涵
    • 只关心程序中有多少角色
    • 每个角色有什么方法,有什么属性
    • 所有角色都是由一个模板创建的
    • 所有属性和技能都待在自己的角色模板中--------可读性好
    • 能够更加方便得为角色添加技能或属性----------可扩展性好
    • 面向对象有个非常重要的关健侧--抽象
  • class 类名:
    • 类名一般首字母要求大写
    • 类内定义的变量为类的属性,查看类的属性如Car.color
      • 类属性和实例属性的区别
        • 概念,类属性是类的属性,实例属性是对象属性
        • 使用,类属性可以通过类也可以通过实例调用,实例属性只能实例调
    • 变量=类名(),变量实例化成对象
    • __init__(self, , , )初始化方法
      • 在实例化的同时就会调用,实例化的同时会开辟一块内存
      • __new__创造空间给对象,然后__init__初始化
      • 不需要写返回值,默认return None不能改
    • 通过对象.方法()调用 = 类.方法(对象),但是推荐用对象调用
    • __main__指当前文件
    • 函数名一般小写字母开头
  • 对象名
    • 对象.属性 查看对象属性
    • 对象.方法名 调方法
  • 静态变量
    • 类变量,类的属性
    • 操作静态变量时,如果是查看,用类和对象都可以
    • 如果是修改,尽量使用类名修改,这样不会出错
    • 用对象修改静态变量只要用到了赋值,相当于在自己的对象空间内新建属性,并不能修改类空间的内容
  • 组合
    • 对象可以作为另一个类的属性
  • 什么是面向对象
    • 一切皆对象
    • 内置的类
      • str int bool list dict tuple set
      • 内置的类不需要定义可以直接调用
  • 面向对象三大特性----类的三大特性面向对象的三大特性 - 断浪狂刀忆年少 - 博客园 (cnblogs.com)
    • 封装
      • 广义上的封装
        • 把方法和变量都封装在类中
        • 在类的外部不能直接调用
    • 继承
    • 多态
      • 通过继承来实现
      • python中处处是多态
      • 多态的好处
        • 定义一个函数func( a )传入一个对象a
        • 在函数内调用对象的某个方法a.fun(),返回结果
        • 由于多态性质,传入对象不同,函数func的运算过程和返回结果不同
        • 思考了一下,反射结合多态应该很实用,定义一个数据类,增删改查四个子类继承数据类,传入一条SQL,判断类型,然后实例化对应的类,反射写入SQL到对象属性,这时定义一个调用数据库的方法,传入的对象不同,就可以做增删改查
  • 面向对象的三个装饰器
    • '@property'
      • 将一个方法伪装成属性,调用时就不用加括号了
    • '@staticmethod'
      • 声明类的方法是静态方法,不用传任何默认参数,不实例化,类名/对象+方法名可以直接调用
      • 与类和对象没什么直接关系的方法,不获取类也不获取 对象,可以改写到类外面用普通函数
      • 便于管理组织代码
    • '@classmethod'
      • 装饰当前的方法为类方法,默认参数cls,cls指的就是当前类
      • 用cls表示当前类的内存地址
      • 在方法中像获取实例相关的数据,比如获取实例本身,或者实例的属性,或者调用其他实例方法,用实例方法
      • 在方法中获取类相关的数据,比如类属性,类本身,其他的类方法
  • 类直接调用实例方法的问题
  •  
posted @   3notblv  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示