1.面向对象编程概念

面向对象是包含面向过程

面向过程编程

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

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


  一个模型、一个例子

实例/对象

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

实例化

  把模型变成实例的过程

构造函数

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

  __init__()

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

self
  本类对象

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

  self.xxx=xxx

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

析构函数

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

  __def__()

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

私有

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

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

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

2.面向对象编程小例子

import traceback
import pymysql
from loguru import logger
mysql_info = {
'host': '118.24.3.40',
'user': 'jxz',
'password': '123456',
'port': 3306,
'db': 'jxz',
'charset': 'utf8',
'autocommit': True
}
class MySQL:
def __init__(self,host,user,password,db,charset,autocommit=True):
self.conn = pymysql.connect(user=user,host=host,password=password,db=db,charset=charset,autocommit=autocommit)
self.cursor = self.conn.cursor()
def __del__(self): # 析构函数是实例被销毁的时候执行。比如关闭数据库的游标、数据库或关闭文件
self.__close() def execute(self,sql):
try:
self.cursor.execute(sql)
except:
logger.error('sql执行出错,sql语句是{}', sql)
logger.error(traceback.format_exc()) def fetchall(self, sql):
self.execute(sql)
return self.cursor.fetchall() def fetchone(self, sql):
self.execute(sql)
return self.cursor.fetchone()
def __close(self): # __代表是私有的(可以用来限制变量或函数),只能通过self调用,不能用类名调用
self.cursor.close()
self.conn.close() if __name__ == '__main__':
my = MySQL(**mysql_info)
print(my.fetchone('select * from '))

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

类方法

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

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

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

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

类变量

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

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

实例方法

  实例化后才能调用的方法

实例变量

  实例化后才能调用的变量

属性方法

  看起来像变量的函数

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

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

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

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

继承

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

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

  重写:

    1.直接覆盖父类方法

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

class Lw:
def driver(self):
print('kaiche') def make_money(self):
print('5000块钱') class Xw(Lw):
# 重写,覆盖式
def driver(self):
print('开飞机') def make_money(self): # 重写,在父类基础上做修改
super().make_money() # super():自动找父类
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. 达梦数据库产品支持技术学习分享_Week2

    本周主要从以下几个方面进行本人对达梦数据库学习的分享,学习进度和学习情况因人而异,仅供参考. 一.文本命令行工具使用的方法(Disql和dmfldr) 二.数据库备份 三.定时作业功能 四.系统表和动 ...

  2. 实用程序包utils - 基于Rollup打包输出各模块文件(二)

    上一次,我们讲到了如何去搭建一个前端工具库的工程,那么今天我们来聊一聊如何去将其打包输出. 需求 事情是这个样子的.我有一个这样的需求,或者是我发现有这么一个需求.就是有时候吧,我也不想搞的那么复杂, ...

  3. 书列荐书 |《黑天鹅·如何应对不可预知的未来》【美】纳西姆 尼古拉斯 塔勒布 著

    你不知道的事比你知道的事更有意义,因为生活中发生了许多微小的事情,尽管出现的概率非常小,但是却以某一种巨大的力量影响我们的生活.但是由于思维习惯的问题,导致我们看问题的方式使得我们不能很快地把握事物的 ...

  4. GPU特征处理技术

    GPU特征处理技术 GPU和CPU有何不同? 现代片上系统(SoC)通常集成中央处理器(CPU)和图形处理器(GPU).设计不同,这可能更取决于处理的数据集的类型. CPU经过优化,可以一次对几块数据 ...

  5. CVPR2020论文介绍: 3D 目标检测高效算法

    CVPR2020论文介绍: 3D 目标检测高效算法 CVPR 2020: Structure Aware Single-Stage 3D Object Detection from Point Clo ...

  6. 第四代自动泊车从APA到AVP技术

    第四代自动泊车从APA到AVP技术 前言 自动泊车是指汽车自动泊车入位不需要人工控制,系统能够自动帮你将车辆停入车位,在倒车入库中可谓是驾驶者的一项利器.当我们找到一个理想的停车地点,只需轻轻启动按钮 ...

  7. httprunner_安装及利用脚手架工具快速创建项目

    一.安装httprunner 笔者自己安装的版本为2.5.7 安装命令: pip  install httprunner==2.5.7 二.快速创建目录 hrun --startproject dem ...

  8. jemeter压测, 高级应用: 发1万个请求,每个请求参数都不同, 使用CSV数据文件配置

    今天接到一个压测任务, 数据源需要自己从测试环境库中取, 并且使用jemeter 请求, 每个请求参数都不相同 这里使用jemeter的 CSV数据文件来配置: 这样配置好后, 开始发送请求: csv ...

  9. 编译原理-一种词法分析器LEX原理

    1.将所有单词的正规集用正规式描述 2.用正规式到NFA的转换算 得到识别所有单词用NFA 3.用NFA到DFA的转换算法 得到识别所有单词用DFA 4.将DFA的状态转换函数表示成二维数组 并与DF ...

  10. 工作流中容器化的依赖注入!Activiti集成CDI实现工作流的可配置型和可扩展型

    Activiti工作流集成CDI简介 activiti-cdi模块提供activiti的可配置型和cdi扩展 activiti-cdi的特性: 支持 @BusinessProcessScoped be ...