python 15篇 面向对象
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篇 面向对象的更多相关文章
- Python入门篇-面向对象概述
Python入门篇-面向对象概述 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.语言的分类 面向机器 抽象成机器指令,机器容易理解 代表:汇编语言 面向过程 做一件事情,排出个 ...
- (转)Python成长之路【第九篇】:Python基础之面向对象
一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...
- 第四篇:python 高级之面向对象初级
python 高级之面向对象初级 python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 ...
- 第五篇:python高级之面向对象高级
python高级之面向对象高级 python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两 ...
- 【Python之路】第七篇--Python基础之面向对象及相关
面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance(obj, cls) 检查obj是否是类 cls 的对象 class Foo(objec ...
- Python和Flask真强大:不能错过的15篇技术热文(转载)
Python和Flask真强大:不能错过的15篇技术热文 本文精选了 Python开发者 11月份的15篇 Python 热文.其中有基础知识,机器学习,爬虫项目实战等. 注:以下文章,点击标题即可阅 ...
- python抽象篇:面向对象
1.面向对象概述 面向过程编程:根据操作数据的函数或语句块来设计程序的. 函数式编程:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象编程:数据和功能结合起来,用称为对象的东西包 ...
- python抽象篇:面向对象基础
1.面向对象概述 面向过程编程:根据操作数据的函数或语句块来设计程序的. 函数式编程:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象编程:数据和功能结合起来,用称为对象的东西包 ...
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
随机推荐
- 4. springmvc底层原理2
Spring mvc 是子容器 Spring 是 父容器 =================================================================== pub ...
- 自动机器学习(AutoML)
自动机器学习(AutoML) 不再需要苦恼于学习各种机器学习的算法 目录: 一.为什么需要自动机器学习 二.超参数优化 Hyper-parameter Optimization 三.元学习 Meta ...
- 摄像头ISP系统原理(中)
摄像头ISP系统原理(中) AF(FOCUS)----自动对焦 根据光学知识,景物在传感器上成像最清晰时处于合焦平面上.通过更改 LENS 的位置,使得景物在传感器上清晰的成像,是 ISP FOCUS ...
- 自主数据类型:在TVM中启用自定义数据类型探索
自主数据类型:在TVM中启用自定义数据类型探索 介绍 在设计加速器时,一个重要的决定是如何在硬件中近似地表示实数.这个问题有一个长期的行业标准解决方案:IEEE 754浮点标准.1.然而,当试图通过构 ...
- Gbps接口面向汽车应用
Gbps接口面向汽车应用 Gbps interfaces target automotive appications 巴黎--不久前,移动通信行业是一个领着芯片商的领头羊,命令坐着,脚跟着,然后翻身. ...
- UF_TRNS 变换相关
Open C uf5940uf5941uf5942 矩阵乘积变换uf5943 平移变换uf5944 缩放变换uf5945 旋转变换uf5946 镜像变换uf5947 实现变换,根据变换矩阵 ...
- PTA7~9题目集总结与归纳
前言: 总结三次题目集的知识点.题量.难度等情况. 目录: 题目集7(7-1).(7-2)两道题目的递进式设计分析总结 题目集8和题目集9两道ATM机仿真题目的设计思路分析总结 一. 题目集7(7-1 ...
- 常用的16个Java实用工具类,Java开发人员请收藏!
在Java中,实用程序类是一个定义一组执行常用功能的方法的类.这篇文章展示了最常用的Java实用程序类及其最常用的方法.类列表及其方法列表都按流行度排序.该数据基于GitHub随机选择的50,000个 ...
- 「模拟8.21」山洞(矩阵优化DP)
暴力: 正解: 考虑循环矩阵,f[i][j]表示从i点到j点的方案数 我们发现n很小,我们预处理出n次的f[i][j] 然后在矩阵快速幂中,我们要从当前的f[i][j]*f[j][k]-->fi ...
- Java字符串比较(3种方法)以及对比 C++ 时的注意项
字符串比较是常见的操作,包括比较相等.比较大小.比较前缀和后缀串等.在 Java 中,比较字符串的常用方法有 3 个:equals() 方法.equalsIgnoreCase() 方法. compar ...