[Python_4] Python 面向对象(OOP)
0. 说明
Python 面向对象(OOP) 笔记、迭代磁盘文件、析构函数、内置方法、多重继承、异常处理
参考
1. 面向对象
# -*-coding:utf-8-*- """
OOP 面向对象编程
""" """
1. pass 的使用, pass 是占位符
"""
if True:
pass
print(10) def f1():
pass """
2. 定义类
""" class Emp:
pass """
3. 创建对象
"""
e1 = Emp()
print(e1.__class__) """
4. 定义静态变量
""" class Car:
brand = "BWM" # 静态变量
__color = "white" # __开头是私有的 print(Car.brand) # print(Car.__color) class Cat:
"""
类方法,是通过类访问的静态方法
类方法不需要实例化对象,通过类名直接进行调用,相当于java中的静态方法。
但方法的首参必须是cls类型,表示当前的类
"""
@classmethod
def add(cls, a, b):
return a + b """
静态方法,不通过类访问,直接访问的方法
python中的静态方法类似于scala中的函数,即可以直接访问的函数,
不需要通过类名访问。首个参数也无需定义成cls。
"""
@staticmethod
def sub(a, b):
return a - b """
成员函数 通过对象调用的函数,函数首个参数需要使用 self 作为参数
"""
def watch(self, a, b):
print(a)
print(b)
print("xx") """
构造函数
构造函数名称固定,就是__init__方法
""" class Person:
# 构造函数
def __init__(self):
print("创建了一个 Person 对象")
self.name = "tom"
self.age = 10
# del self.name p1 = Person()
print(p1.name) # 变量可以删除
# va = 100
# print(va)
# del va
# print(va)
2. 迭代磁盘文件
"""
n. 迭代磁盘文件
"""
import os def allfiles(dir):
print(dir, "gb2312")
if os.path.isdir(dir):
subdirs = os.listdir(dir)
for sub in subdirs:
allfiles(dir + "/" + sub) allfiles("F:/Archives/Books")
3. 析构函数
销毁对象时使用的函数
"""
析构函数
"""
class Man: # 构造函数
def __init__(self, name):
print("创建 Man")
self.name = name # 析构函数
def __del__(self):
pass
print("销毁 Man") # m1 = Man("tomasss")
# m2=m1
# m1 = None
4. 内置方法
"""
内置方法,操纵对象的属性
"""
m1 = Man("xxxxxx")
print(hasattr(m1, "age"))
setattr(m1, "age", 12)
delattr(m1, "age")
print(getattr(m1, "age", -1)) # 访问类的属性
# __dict__访问类的成员
r = Man.__dict__
print(r) # 访问类名
print(Man.__name__) # 所有父类构成的元组
print(Man.__bases__)
5. 多重继承
"""
考察多重继承,类可以有多个父类
"""
class Horse:
def __init__(self, name):
self.name = name class Donkey:
def __init__(self, age):
self.age = age class Luozi(Horse, Donkey):
def __init__(self, name, age, color):
Horse.__init__(self, name)
Donkey.__init__(self, age)
self.color = color lz1 = Luozi("L1", 12, "black")
print(lz1.name)
6. 异常处理
"""
异常处理
"""
try:
print(1 / 0)
except:
print("0不能做除数")
finally:
print("over") try:
print(1 / 0)
finally:
print("over")
[Python_4] Python 面向对象(OOP)的更多相关文章
- Python面向对象OOP
一 OOP 与C++和Java一样,Python同样具有OOP设计. 过程式:从前到后,一条一条,机器能接受的顺序性方式:方式大概为"首先你应该做什么,第二应该做什么,高级点的做点假 ...
- 如何吃透Python的面向对象(OOP)
本篇可乐和大家一起来吃透 Python 的面向对象,类和实例. 面向对象(OOP) 解释:面向对象它是一种编程的思想,将现实事物抽象化为编程对象. 举例说明:喝可乐 ① 选择自己根据配方买对应的材料 ...
- python面向对象基本概念(OOP)
面向对象(OOP)基本概念 面向对象编程 —— Object Oriented Programming 简写 OOP 目标 了解 面向对象 基本概念 01. 面向对象基本概念 我们之前学习的编程方式就 ...
- python 面向对象初级篇
Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...
- Python 面向对象 基础
编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...
- python 面向对象学习
------Python面向对象初 下面写一个类的简单实用,以便方便理解类 #python 3.5环境,解释器在linux需要改变 #阅读手册查询readme文件 #作者:S12-陈金彭 class ...
- Python开发【第七篇】:面向对象 和 python面向对象(初级篇)(上)
Python 面向对象(初级篇) 51CTO同步发布地址:http://3060674.blog.51cto.com/3050674/1689163 概述 面向过程:根据业务逻辑从上到下写垒代码 ...
- Python3+Selenium2完整的自动化测试实现之旅(五):自动化测试框架、Python面向对象以及POM设计模型简介
前言 之前的系列博客,陆续学习整理了自动化测试环境的搭建.IE和Chrome浏览器驱动的配置.selenium-webdriver模块封装的元素定位以及控制浏览器.处理警示框.鼠标键盘等方法的使用,这 ...
- 【转】Python 面向对象(初级篇)
[转]Python 面向对象(初级篇) 51CTO同步发布地址:http://3060674.blog.51cto.com/3050674/1689163 概述 面向过程:根据业务逻辑从上到下写垒代码 ...
随机推荐
- c# LINQ用法
一.什么是LINQ LINQ(读音link)代表语言集成查询(Language Integrated Query),是.NEt框架的扩展,它允许我们用SQL查询数据库的方式来查询数据的集合,使用它,你 ...
- PBN飞越转弯Flyover衔接TF、CF航段保护区组图
PBN飞越转弯Flyover衔接TF.CF航段虽不常用,但也很重要,与旁切转弯有一定的相似性. 飞越转弯 flyover-TF/CF 叠加图: 飞越转弯 flyover-TF/CF 分解图:
- UVA 11134 Fabled Rooks(贪心的妙用+memset误用警示)
题目链接: https://cn.vjudge.net/problem/UVA-11134 /* 问题 输入棋盘的规模和车的数量n(1=<n<=5000),接着输入n辆车的所能在的矩阵的范 ...
- Druid链接池配置加密密码链接数据库
Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0.DBCP.PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB ...
- ASP.NET MVC显示异常信息
开发ASP.NET多了,它的异常信息显示也习惯了.但在ASP.NET MVC中,却是另外一番情形. 以前只习惯使用IE浏览器,现在开发ASP.NET MVC程序,为了捕获到异常信息,Firefox的f ...
- JS存储cookie读取cookie删除cookie详细用法
假设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使用JS来引用temp的变量值,对于JS中的全局变量或者静态变量 ...
- 使用ScheduledExecutorService实现任务延迟
在做项目的过程中,遇到一个场景:在审批流中,如果上级领导不审批,则在10分钟后自动审批.也就是要做一个任务在多长时间后执行的效果 在不断的摸索中,想到了使用线程池,发现有个ScheduledExecu ...
- JUC源码1-原子量
什么是原子量,原子量就是一次操作,要么成功,要么失败.比如java中的i++ 或i-- , 不具备原子性,每次读取的值都是不一样的,探究其原因,x86体系中,他的总线是32位的,i++的操作指令必须是 ...
- [日常] Go语言圣经-可变参数习题
1.参数数量可变的函数称为为可变参数函数,例子就是fmt.Printf和类似函数2.参数列表的最后一个参数类型之前加上省略符号“...”3.虽然在可变参数函数内部,...int 型参数的行为看起来很像 ...
- Node.js-串行化流程控制
内容主要来源:吴海星译,<Node.js实战>. 串行任务:需要一个接着一个坐的任务叫做串行任务. 可以使用回调的方式让几个异步任务按顺序执行,但如果任务过多,必须组织一下,否则过多的回调 ...