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. 价值 1500 美元的 iPhone 值得买吗

    原文链接:价值 1500 美元的 iPhone 值得买吗 最新款 iPhone 的最高配型号在含税的情况下价格远超 1500 美元.价格合理吗?合理.理由如下:1,硬件已与笔记本电脑相当,价格也相当: ...

  2. WPF装饰器

    装饰器定义: 装饰器是一种特殊类型的 FrameworkElement,用于向用户提供可视化提示. 对于其他用户,装饰器可用于将功能控点添加到元素中或提供有关控件的状态信息. 装饰器可以在不改变原有的 ...

  3. Deep learning with Python 学习笔记(5)

    本节讲深度学习用于文本和序列 用于处理序列的两种基本的深度学习算法分别是循环神经网络(recurrent neural network)和一维卷积神经网络(1D convnet) 与其他所有神经网络一 ...

  4. js实现响应式瀑布流

    导读:瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.最早采用此布局的网站是Pinterest ...

  5. Netty 心跳服务之 IdleStateHandler 源码分析

    前言:Netty 提供的心跳介绍 Netty 作为一个网络框架,提供了诸多功能,比如我们之前说的编解码,Netty 准备很多现成的编解码器,同时,Netty 还为我们准备了网络中,非常重要的一个服务- ...

  6. C# 字符串首字符大写

    我找到一些把字符串首字符大写的方法. 假如需要把字符串 "red" 转换为 "Red",把 "red house" 转为 "Red ...

  7. [android] 切换按钮-自定义控件

    准备两张图片,按钮背景,上面的小开关 创建一个类MyToggleBtn,继承View 实现三个构造方法,传递上下文, 实现构造方法,传递Context对象,在java代码中实例化时主要使用这个 实现构 ...

  8. 关于centos 防火墙设置(nginx无法访问)

    参考:http://blog.csdn.net/rosten/article/details/25053523 或者:http://blog.csdn.net/zhang197093/article/ ...

  9. java项目运用server运行(eclipse、myeclipse通用)

    右键点击”new“选择“Other”,打开选项 勾选”Show All Wizards“ 然后在搜索处输入server,选择server,点击next 刚进来时此处都是空的,点击Configure r ...

  10. Java线程分析

    一.Java线程的生命周期中,存在几种状态.在Thread类里有一个枚举类型State,定义了线程的几种状态 public enum State { NEW, RUNNABLE, BLOCKED, W ...