1.面向对象编程概念

面向对象是包含面向过程

面向过程编程

  买车:
    1、4s看车,买车
    2、上保险 保险公司
    3、交税 地税局
    4、交管所 上牌
面向对象编程

  卖车处:
    1、4s
    2、保险
    3、交税
    4、上牌


  一个模型、一个例子

实例/对象

  实例,通过模型来造具体的东西

实例化

  把模型变成实例的过程

构造函数

  类在实例化的时候,会自动执行

  __init__()

  1. def __init__(self, name, sex):
  2. # 构造函数,1.类在实例化时自动执行的函数 2.如果要使用这个类,必须要传一些参数
  3. self.name = name
  4. self.sex = sex
  5. self.birthday = time.time()
  6. self.cry()

self
  本类对象

  self就是你实例化的那个变量

  self.xxx=xxx

  在别的函数里就直接可以用了

析构函数

  实例被销毁的时候自动执行的函数

  __def__()

  1. def __del__(self):
  2. # 析构函数是实例被销毁的时候执行。比如关闭数据库的游标、数据库或关闭文件
  3. print('我是析构函数')

私有

  不是公共的,只能在类里面调用,不能在类外面调用

  函数/变量以__开头,就是私有的

  1. def __close(self): # __代表是私有的(可以用来限制变量或函数),只能通过self调用,不能用类名调用
  2. self.cursor.close()
  3. self.conn.close()

2.面向对象编程小例子

  1. import traceback
  2. import pymysql
  3. from loguru import logger
  4. mysql_info = {
  5. 'host': '118.24.3.40',
  6. 'user': 'jxz',
  7. 'password': '123456',
  8. 'port': 3306,
  9. 'db': 'jxz',
  10. 'charset': 'utf8',
  11. 'autocommit': True
  12. }
  13. class MySQL:
  14. def __init__(self,host,user,password,db,charset,autocommit=True):
  15. self.conn = pymysql.connect(user=user,host=host,password=password,db=db,charset=charset,autocommit=autocommit)
  16. self.cursor = self.conn.cursor()
  17. def __del__(self): # 析构函数是实例被销毁的时候执行。比如关闭数据库的游标、数据库或关闭文件
  18. self.__close()
  19.  
  20. def execute(self,sql):
  21. try:
  22. self.cursor.execute(sql)
  23. except:
  24. logger.error('sql执行出错,sql语句是{}', sql)
  25. logger.error(traceback.format_exc())
  26.  
  27. def fetchall(self, sql):
  28. self.execute(sql)
  29. return self.cursor.fetchall()
  30.  
  31. def fetchone(self, sql):
  32. self.execute(sql)
  33. return self.cursor.fetchone()
  34. def __close(self): # __代表是私有的(可以用来限制变量或函数),只能通过self调用,不能用类名调用
  35. self.cursor.close()
  36. self.conn.close()
  37.  
  38. if __name__ == '__main__':
  39. my = MySQL(**mysql_info)
  40. print(my.fetchone('select * from '))

3.面向对象编程的其他知识点

类方法

  类里面自带的方法,不用实例化就可以调用,想象,模型上自带的功能

  类方法是公共的,在实例方法里面可以随意调用

  但是在类方法里不能调用实例方法,不能使用实例变量,但是他可以调用其他的类方法

  1. @classmethod
  2. def putonghua(cls): # 类方法不需要实例化就可以调用
  3. print(cls.country)
  4. print('会说普通话')
  5. # cls.name # 不能调用实例属性

类变量

  类在定义好的时候,就把这个变量定义好了,也是公共的

  1. class Person:
  2. country = 'China' # 类变量,在定义类时,就已经在类里面了,使用类名.变量名调用

实例方法

  实例化后才能调用的方法

实例变量

  实例化后才能调用的变量

属性方法

  看起来像变量的函数

  1. # 属性方法,使用property修饰器,不能有参数,必须有返回值
  2. @property
  3. def age(self):
  4. return int(time.time() - self.birthday)

静态方法
  一个和类没有关系的方法,就是一个普通的方法,只是写在类里面而已

  不能调用实例方法,也不能调用类方法

  1. @staticmethod
  2. def suangua():
  3. print('静态方法,啥也干不了')

继承

  子类继承父类公共的方法,也可以重写父类的方法

  父类的私有变量和私有方法不能继承

  重写:

    1.直接覆盖父类方法

    2.在父类的基础上添加新的功能

  1. class Lw:
  2. def driver(self):
  3. print('kaiche')
  4.  
  5. def make_money(self):
  6. print('5000块钱')
  7.  
  8. class Xw(Lw):
  9. # 重写,覆盖式
  10. def driver(self):
  11. print('开飞机')
  12.  
  13. def make_money(self): # 重写,在父类基础上做修改
  14. super().make_money() # super():自动找父类
  15. print('再挣5000块钱')

python 15篇 面向对象的更多相关文章

  1. Python入门篇-面向对象概述

    Python入门篇-面向对象概述 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.语言的分类 面向机器 抽象成机器指令,机器容易理解 代表:汇编语言 面向过程 做一件事情,排出个 ...

  2. (转)Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...

  3. 第四篇:python 高级之面向对象初级

    python 高级之面向对象初级   python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 ...

  4. 第五篇:python高级之面向对象高级

    python高级之面向对象高级   python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两 ...

  5. 【Python之路】第七篇--Python基础之面向对象及相关

    面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance(obj, cls) 检查obj是否是类 cls 的对象 class Foo(objec ...

  6. Python和Flask真强大:不能错过的15篇技术热文(转载)

    Python和Flask真强大:不能错过的15篇技术热文 本文精选了 Python开发者 11月份的15篇 Python 热文.其中有基础知识,机器学习,爬虫项目实战等. 注:以下文章,点击标题即可阅 ...

  7. python抽象篇:面向对象

    1.面向对象概述 面向过程编程:根据操作数据的函数或语句块来设计程序的. 函数式编程:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象编程:数据和功能结合起来,用称为对象的东西包 ...

  8. python抽象篇:面向对象基础

    1.面向对象概述 面向过程编程:根据操作数据的函数或语句块来设计程序的. 函数式编程:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象编程:数据和功能结合起来,用称为对象的东西包 ...

  9. 【Python五篇慢慢弹】快速上手学python

    快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...

随机推荐

  1. Python+selenium 自动化-启用带插件的chrome浏览器,调用浏览器带插件,浏览器加载配置信息。

    Python+selenium 自动化-启用带插件的chrome浏览器,调用浏览器带插件,浏览器加载配置信息.   本文链接:https://blog.csdn.net/qq_38161040/art ...

  2. GO语言复合类型04---映射

    package main import "fmt" /* 映射(map)是键值对(key-value)数据的集合 根据键key可以快速检索值value 键值的类型可以是任意的,ke ...

  3. Tengine Framework基础

    Tengine Framework基础 最受开发者喜爱的边缘AI计算框架 Tengine是OPEN AI LAB推出的自主知识产权的边缘AI计算框架,致力于解决AIoT产业链碎片化问题,加速AI产业化 ...

  4. 北汽极狐ARCFOX与华为合作

    北汽极狐ARCFOX与华为合作 全球首款激光雷达量产车 2021年,是激光雷达"上车"的元年. 曾经价格高不可攀,只能用于Robotaxi.无人车测试的激光雷达,终于彻底具备商业化 ...

  5. GPU编程和流式多处理器(三)

    GPU编程和流式多处理器(三) 3. Floating-Point Support 快速的本机浮点硬件是GPU的存在理由,并且在许多方面,它们在浮点实现方面都等于或优于CPU.全速支持异常可以根据每条 ...

  6. 如何在TVM上集成Codegen(下)

    如何在TVM上集成Codegen(下) Bring DNNL to TVM: JSON Codegen/Runtime 现在实现将中继图序列化为JSON表示的DNNL codegen,然后实现DNNL ...

  7. Java面试必知必会(扩展)——Java基础

    float f=3.4;是否正确? 不正确 3.4是双精度,将双精度赋值给浮点型属于向下转型,会造成精度损失: 因此需要强制类型转换: 方式一:float f=(float)3.4 方式二:float ...

  8. csps前小结

    冒着题没改完颓废被发现的风险来写博客 好像离csps只剩两天了,然而没啥感觉 最近考试有时考得还算可以,有时也会很炸 今天考试事实上心态啥崩,因为T1结论题一直没思路,想了一个小时连暴力都没打 过了一 ...

  9. Binding(二):控件关联和代码提升

    上节我们讲到,使用Binding,我们可以关联后台代码中的属性,在某些情况下,我们可能需要将两个控件关联起来,借助Binding,我们也可以轻松的实现. 关联控件 设想这样一个场景,界面中有个Chec ...

  10. 数据泵导入,报错:ORA-12899: value too large for column "SCOTT"."TEST112"."JOIN" (actual: 9, maximum: 8)

    1.报错: 数据泵执行导入时报错:ORA-12899: value too large for column "SCOTT"."TEST112"."J ...