对象(object)

1.对象(object): 面向对象程序设计重要术语。

对象的特性:多态性、封装性、继承性

>>def add(x,y):

return x+y

对于很多类型的参数都可以用:

>>>add(1,2)

>>>add('Good','Bye')

'GoodBye'

2.所有的Python对象都拥有三个特性:身份,类型和值。

  • 任何对象的身份都可以用内建函数:id()来表示;
  • 也可以用内建函数type()查看python对象的类型。

3.类(class)

Python中,喜欢用单数名词,并且首字母大写,来描述对象的类。如Bird和Lark.

类的关系:子类—>类<----超类

Subclass, class, superclass

如:百灵鸟类  是鸟类的子类,而鸟类是百灵鸟类的超类。

类的定义后必须先实例化才能使用,类的初始化和函数调用类似。只要使用类名加圆括号的形式就可以初始化一个类。类初始后会产生一个对象

说明:

# >>>a=human()  是human类的实例化

#>>>a是查看对象a

#>>>a.sex  是访问sex属性,a.age是访问age属性

在python中,当创建一个类以后就可以通过类名访问其属性。如果直接使用类名修改其属性,那么将影响已经初始化的对象。

>>>human.age

>>>human.age=23

①创建自己的类:

_metaclass_=type    #确定使用新式类

Class Person:

Def setName(self,name):   #定义setName方法

Self.name=name

Def geName(self):             #特殊的变量:self     # 表示对象本身

Return self.name

Def greet(self):

Print “Hello,World! I’m %s.”%self.name

②创建实例

4.对象的特性、函数和方法

1)方法的定义:在类的内部使用def关键字可以为类定义一个方法,注意的是:必须包含一个参数“self”,且“self”必须为第一个参数。

方法将它的第一个参数绑定到所属的实例上。因此这个参数不必提供。

5.类的属性

类的属性实际上是类内部的变量,确切的说:称作类的公有属性。

类的外部属性:类的外部不能对其属性进行操作。以双下划线开始

>>>class book:

__author=’’

__age=’’

__name=’’

__price=’’

>>>a=book()

>>>a.__age         #试图访问对象的_age私有属性,结果导致错误。

Python并不直接支持私有方式,而要靠程序员自己把握在外部进行特性修改的时机。毕竟在使用对象之前应该知道该如何使用。但是,可以用一起小技巧达到私有特性的效果。

为了让方法或者特性变为私有(从外部无法访问),只要在它的名字之前加上双下划线即可。

Class Secretive:

Def __inaccessible(self):

Print “Bet you can’t see me…”

Def accessible(self):

Print “The secret message is:”

Self.__inaccessible()

现在___inaccessilbe从外界是无法访问,而在类内部还能使用(比如从accessilbe)访问:

>>>s=Secretive()

>>>s.__inaccessible()

l  类的名称空间:class namespace   表示你把数据保存在变量中,对他们按名称空间进行分组。本身没有任何属性的类。

如:class MyData(object):

pass

下面的两个语句几乎等价:

Def foo(x): return x*x

Foo=lambda x:x*x

这个命名空间(名称空间)可由类内所有成员访问。

>>>class C:

Print”Class C being defined…”

Class C being defined…

上面的代码中,在类作用域内定义了一个可供所有变量(实例)访问的变量,有来计算类的成员数量。注意:init用来初始化所有实例。

指定超类:

子类可以扩展超类的定义,将其它类名写有class语句后的圆括号内可以指定超类:

Class Fliter:

Def init(self):

Self.blocked=[]

Def fliter(self.sequence) :

Return[x for x in sequence if x not in self.blocked ]

Class SPAMFilter(Fliter):

Def init(self):

Self.blocked=[‘SPAM’]

Filter是个用于过滤序列的通用类,事实上它不能过滤任何东西:

>>>f=Fliter()

>>>f.init()

>>>f.filter([1,2,3])

调查继承:

如果想查看一个类是否是另一个的子类,可以使用内建的issubclass函数。

>>>issubclass(SPAMFilter,Filter)

True

构造方法:

在Python中创建一个构造方法很容易,只要把init方法的名字从简单的init修改为魔法版本:__init__即可。构造方法和其它方法不同的地方在于,当一个对象被创建后,会立即调用构造方法。

python基础学习笔记5--对象的更多相关文章

  1. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  2. Python 基础学习笔记(超详细版)

    1.变量 python中变量很简单,不需要指定数据类型,直接使用等号定义就好.python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前 ...

  3. python 基础学习笔记(1)

    声明:  本人是在校学生,自学python,也是刚刚开始学习,写博客纯属为了让自己整理知识点和关键内容,当然也希望可以通过我都博客来提醒一些零基础学习python的人们.若有什么不对,请大家及时指出, ...

  4. Python基础学习笔记(十三)异常

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-exceptions.html Python用异常对象(excep ...

  5. Python基础学习笔记(十二)文件I/O

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-files-io.html ▶ 键盘输入 注意raw_input函 ...

  6. Python基础学习笔记(十一)函数、模块与包

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-functions.html 3. http://www.liao ...

  7. Python基础学习笔记(九)常用数据类型转换函数

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-variable-types.html 3. http://www ...

  8. Python基础学习笔记(六)常用列表操作函数和方法

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-lists.html 3. http://www.liaoxuef ...

  9. Python基础学习笔记(五)常用字符串内建函数

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-strings.html 3. http://www.liaoxu ...

  10. Python基础学习笔记(三)运算符

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-chinese-encoding.html 3. http://w ...

随机推荐

  1. Xcode常用快捷键 (转载)

    Xcode快捷键,工欲善其事,必先利其器.mac的键盘和ms的还是有些不一样,得适应一下下. 新建项目 command+shift+n 新建文件 command+n 新建空文件 command+con ...

  2. OC中最难的一部分内容:内存管理

    OC中最难的一部分内容:内存管理为什么说他难呢?因为内存如果需要我们程序员去管理的话,那个难度肯定是很大的,如果是Java,垃圾回收器会把这份工作给做了,我们不需要关心,但是就是因为如此,Androi ...

  3. [多线程同步练习]PV操作

    看一个较为复杂的生产者-消费者问题: 问题描述 桌子上有一只盘子,每次只能向其中放入一个水果.爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,儿子专等吃盘子中的橘子,女儿专等吃盘子中的苹果.只有盘子为空时 ...

  4. C语言中头文件和cpp文件解析

    务必提前预读这里的内容:http://www.cnblogs.com/stemon/p/3999844.html 回到cpp文件与头文件各写什么内容的话题上: 理论上来说cpp文件与头文件里的内容,只 ...

  5. PHP比较全的友好的时间显示,比如‘刚刚’,'几秒前'等

    分享一个php友好的比较完成的时间格式化函数,包括‘刚刚’,'几秒之前',‘几分钟前’,'几小时前',几天前,几周前,几个月前等.调用方式很简单,是从ThinkSNS 里面拿出来的. /** * 友好 ...

  6. IE6下不能定义1px高度的容器和IE6 双边距

        (1)触发的条件---定义一个div,将容器的高度设置成1px (2)  编码得到的结果---在IE6浏览器中,容器的高度不是1px   而是18px (3)出现问题的原因---是因为IE6浏 ...

  7. B/S结构和C/S结构

    概念: C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境 ...

  8. php中mysql语句的基本写法

    php中mysql语句的基本写法 php作为一门后台语言必须要与mysql数据库打交道,做到将内容存储到数据库以及数据库数据读写的操作,那么下面就来说下最近学习的一些东西: 在具体将之前先说一下编码的 ...

  9. KETTLE使用入门

    一.准备文件 1.安装java虚拟机 2.安装kettle安装文件 二.使用步骤 1.点击Spoon.bat,启动kettle,弹出DOS窗口如下: 2.进入主界面 3.新建资源库

  10. Scala中的apply实战详解

    apply可以应用与Object和Class,单调用情景不一样. 通过Array(1,2,3,4,5) 可以调用到Array中的.appy方法.你可以看源码是如何实现apply的. 类中的appy比较 ...