一 OOP

    与C++和Java一样,Python同样具有OOP设计。

过程式:从前到后,一条一条,机器能接受的顺序性方式;方式大概为“首先你应该做什么,第二应该做什么,高级点的做点假设如果遇到什么情况要做什么,或者一件事情要做多少多少遍,… …,”

OOP式:从“类与对象”方式来抽象和理解世界。例如首先物体(Object)大概可以分为“生物”与“非生物”,“生物”又能分为“人、动物、植物”等,“人”又分为“男人,女人”等。。。大自然在世界之巅,不断分类设定。类似于“族谱”,上下之间能“继承”。

类与对象。类是抽象的,是一群的概述,对象是具体的,独立的,例如我存在一个独立的人。对象拥有所在类的属性和方法,同样拥有属于自己对象的属性(方法)。

现实世界中,类拥有属性(attribute)和行为(action);抽象数据中,类拥有数据(data)和方法(method)。类之间,存在继承(inheritance)与改良,类与对象之间,存在实例化。在实例化之后,对象能够在继承的类成员之外,增加属于自己的数据成员。

二  Python OOP

末 Python 中的坑

Python 很强大,坑也不少,一个一个填吧。

一 Python 处理中文及编码方式

    Python3.0之前,由于编码的缘故,处理中文夹杂情况,十分痛苦。要想彻底让它不是问题,第一,理解编码方式之间转换;第二,几个实际例子在手。

二 Python基础语法

1. 浅拷贝赋值,传值与传地址调用

首先看两个例子,关于一个函数参数为int和list两种类型时的不同操作,以增加++一个值为例。

# 传值value参数

a = 1
def  change_integer(a):
    a = a + 1
    return a

# 传地址address参数
b = [1,2,3]
def change_list(b):
    b[0] = b[0] + 1
    return b

# test value
print change_integer(a)
print 'a = ',a

print change_list(b)
print 'b[0] = ',b[0]

#Result:
>a = 1
>b[0] = 2

第一个integer例子中,将一个int类型变量传递给函数,原整型变量a不发生变化。

第二个list例子中,将一个list类型变量传递给函数,原listb会发生变化。

原因在于,对于基本数据类型(例如int),函数会在内存中复制一个新的变量,从而不影响原来变量,这叫“值传递”;

对于list来说,并不属于基本变量,函数传递的是一个指针,指向序列在内存中的地址,从而影响原来的值,称为“指针传递”。

同理,对于matrix或者array类型的数据,也属于非基本类型,因此array_a = array_b这样行为,array_b做操作时同样会影响到array_a,特别注意!!

Python面向对象OOP的更多相关文章

  1. [Python_4] Python 面向对象(OOP)

    0. 说明 Python 面向对象(OOP) 笔记.迭代磁盘文件.析构函数.内置方法.多重继承.异常处理 参考 Python面向对象 1. 面向对象 # -*-coding:utf-8-*- &quo ...

  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. IAAS云计算产品畅想-云主机的产品定位

    要研究某个产品的定位,就要先研究一下这个产品进入市场以后会影响了谁,被影响的产品产业,就是你的定位环境. 现例举一下公有云iaas服务影响了谁(按重要程度顺序): 1.企业IT 2.设备厂商 3.数据 ...

  2. GB2312转换成UTF-8与utf_8转换成GB2312

    本文转载:http://www.cnblogs.com/jonhson/archive/2010/08/10/1796536.html /// <summary> /// utf_8转换成 ...

  3. oracle表空间查询维护命令大全之二(undo表空间)

    --undo表空间汇总 --查看全部的表空间名字 select name from v$tablespace; --创建新的UNDO表空间,并设置自己主动扩展參数; create undo table ...

  4. hdu 4742 Pinball Game 3D 分治+树状数组

    离散化x然后用树状数组解决,排序y然后分治解决,z在分治的时候排序解决. 具体:先对y排序,solve(l,r)分成solve(l,mid),solve(mid+1,r), 然后因为是按照y排序,所以 ...

  5. 动态设置布局LayoutInflater

    LayoutInflater作用是将layout的xml布局文件实例化为View类对象.LayoutInflater 的作用类似于 findViewById(),不同点是LayoutInflater是 ...

  6. 内核与内核模块:depmod,lsmod,modinfo,insmod,rmmod,mdprobe

                  内核模块:/lib/modules/version/kernel或/lib/modules/$(uname -r)/kernel; [root@localhost kern ...

  7. Java基础知识强化07:打印出空心菱形

    1.如图打印出空心菱形: 2.下面是逻辑实现代码: package himi.hebao04; import java.util.Scanner; public class TestDemo08 { ...

  8. WPF DataGrid某列使用多绑定后该列排序失效,列上加入 SortMemberPath 设置即可.

    WPF DataGrid某列使用多绑定后该列排序失效 2011-07-14 10:59hdongq | 浏览 1031 次  悬赏:20 在wpf的datagrid中某一列使用了多绑定,但是该列排序失 ...

  9. WPF 媒体播放器(MediaElement)使用实例(转)

    在WPF 中可以使用MediaElement 为应用程序添加媒体播放控件,以完成播放音频.视频功能.由于MediaElement 属于UIElement,所以它同时也支持鼠标及键盘的操作.本篇将使用M ...

  10. 关于 Repository和UnitOfWork 模式的关系

    本以为,关于这方面的理解,园子中的文章已经很多的了,再多做文章真的就“多做文章了”,但是最近发现,还是有必要的,首先,每个人对于同一事物的理解方式和出发点都是不同的,所以思考的方式得到结果也是不同的. ...