0. 说明

  Python 面向对象(OOP) 笔记、迭代磁盘文件、析构函数、内置方法、多重继承、异常处理

  参考

  Python面向对象


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)的更多相关文章

  1. Python面向对象OOP

    一 OOP     与C++和Java一样,Python同样具有OOP设计. 过程式:从前到后,一条一条,机器能接受的顺序性方式:方式大概为"首先你应该做什么,第二应该做什么,高级点的做点假 ...

  2. 如何吃透Python的面向对象(OOP)

    ​本篇可乐和大家一起来吃透 Python 的面向对象,类和实例. 面向对象(OOP) 解释:面向对象它是一种编程的思想,将现实事物抽象化为编程对象. 举例说明:喝可乐 ① 选择自己根据配方买对应的材料 ...

  3. python面向对象基本概念(OOP)

    面向对象(OOP)基本概念 面向对象编程 —— Object Oriented Programming 简写 OOP 目标 了解 面向对象 基本概念 01. 面向对象基本概念 我们之前学习的编程方式就 ...

  4. python 面向对象初级篇

    Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...

  5. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

  6. python 面向对象学习

    ------Python面向对象初 下面写一个类的简单实用,以便方便理解类 #python 3.5环境,解释器在linux需要改变 #阅读手册查询readme文件 #作者:S12-陈金彭 class ...

  7. Python开发【第七篇】:面向对象 和 python面向对象(初级篇)(上)

    Python 面向对象(初级篇)   51CTO同步发布地址:http://3060674.blog.51cto.com/3050674/1689163 概述 面向过程:根据业务逻辑从上到下写垒代码 ...

  8. Python3+Selenium2完整的自动化测试实现之旅(五):自动化测试框架、Python面向对象以及POM设计模型简介

    前言 之前的系列博客,陆续学习整理了自动化测试环境的搭建.IE和Chrome浏览器驱动的配置.selenium-webdriver模块封装的元素定位以及控制浏览器.处理警示框.鼠标键盘等方法的使用,这 ...

  9. 【转】Python 面向对象(初级篇)

    [转]Python 面向对象(初级篇) 51CTO同步发布地址:http://3060674.blog.51cto.com/3050674/1689163 概述 面向过程:根据业务逻辑从上到下写垒代码 ...

随机推荐

  1. 实现php的startsWith和endsWith

    startsWith(): function startsWith($haystack, $needle){ return strncmp($haystack, $needle, strlen($ne ...

  2. UIView动画上

    主要参考:http://blog.csdn.net/huifeidexin_1/article/details/7597868  http://www.2cto.com/kf/201409/33566 ...

  3. MVC用非Entity Framework将数据显示于视图

    学习此篇之前,先看看<DataTable数据显示于MVC应用程序>http://www.cnblogs.com/insus/p/3361182.html 那是将DataTable显示于MV ...

  4. SQL SERVER TRANSACTION 事物

    1.事务的概念 事物是一种机制,是一种操作序列,它包含了数据库一组操作命令,这组命令要么全部执行,要么都不执行.因此事物是一组不可分割的事物逻辑单元,在数据库进行并发操作时候,事物是作为最小的控制单元 ...

  5. .net 多线程的使用(Thread)

    上篇 net 同步异步 中篇 多线程的使用(Thread) 下篇 net 任务工厂实现异步多线程 Thread多线程概述 上一篇我们介绍了net 的同步与异步,我们异步演示的时候使用的是委托多线程来实 ...

  6. SpringBoot中动态加载(热部署)

    在常规的Java Web开发过程中,在修改完代码后,往往需要重启Tomcat来使得我们的修改生效,在SpringBoot中也需要从新启动SpringBoot来将修改部署.如果我们不希望重启tomcat ...

  7. 《剑指offer》(第二版)Java实现

    Github链接: <剑指offer>(第二版)Java实现 欢迎star!

  8. Maven构建的Spring项目需要哪些依赖?

    Maven构建的Spring项目需要哪些依赖? <!-- Spring依赖 --> <!-- 1.Spring核心依赖 --> <dependency> <g ...

  9. POJ3468(KB7-C 线段树)

    A Simple Problem with Integers Time Limit: 5000MS  Memory Limit: 131072K Total Submissions: 108903   ...

  10. python-享元模式

    源码地址:https://github.com/weilanhanf/PythonDesignPatterns 说明: 如果一个软件系统在运行时所创建的相同或相似对象数量太多,将导致运行代价过高,带来 ...