python学习6 -对象

python  --面向对象的语言,其最大的特性 为  封装,继承,多态。

封装:封装可以不关心对象是如何构建的而直接进行使用。是对全局作用域中其他区域隐藏多余信息的原则  

定义类:

1 >>> class Person():
2     def setName(self,name):
3         self.name = name
4     def getName(self):
5         return self.name
6     def greet(self):
7         print ‘hello i am %s‘ % self.name

  self : 是对对象自身的引用,是 方法(更专业点的可称为 绑定方法) 和 函数的区别

1 >>> foo = Person()
2 >>> bar  = Person()
3 >>> foo.setName(‘zhang‘)
4 >>> bar.setName(‘di‘)
5 >>> foo.greet()
6 hello i am zhang
7 >>> bar.greet()
8 hello i am di

  特性可以在外部访问

1 >>> foo.name
2 ‘zhang‘
3 >>> bar.name
4 ‘di‘
5 >>> bar.name = ‘lu‘
6 >>> bar.greet()
7 hello i am lu

  私有方法,类外部不可调用,内部可调用,用 "__"开头即可

 1 class Service:
 2     def __a(self):
 3         print "you can‘t see me"
 4
 5     def b(self):
 6         print "you can see me"
 7         self.__a()
 8
 9 >>> s = Service()
10 >>> s.__a()
11
12 Traceback (most recent call last):
13   File "<pyshell#29>", line 1, in <module>
14     s.__a()
15 AttributeError: Service instance has no attribute ‘__a‘
16 >>> s.b()
17 you can see me
18 you can‘t see me

  类的定义其实就是执行代码块

1 >>> class a:
2     print "a is created"
3
4
5 a is created

  注意下面代码的区别

 1 >>> class MemberCount():
 2     members = 0
 3     def init(self):
 4         self.members += 1
 5
 7 >>> m1 = MemberCount()
 8 >>> m1.init()
 9 >>> m1.members
10 1
11 >>> m2 = MemberCount()
12 >>> m2.init()
13 >>> m2.members
14 1
15 >>> class MemberCount():
16     members = 0
17     def init(self):
18         MemberCount.members += 1
19
21 >>> m1 = MemberCount()
22 >>> m1.init()
23 >>> m1.members
24 1
25 >>> m2 = MemberCount()
26 >>> m2.init()
27 >>> m2.members
28 2
29 >>> m1.members
30 2

指定超类 

 1 >>> class Filter:
 2     def init(self):
 3         self.blocked = []
 4     def filter(self,sequence):
 5         return [x for x in sequence if x not in self.blocked]
 6
 7
 8 >>> class SapmFilter(Filter):
 9     def init(self):
10         self.blocked = [‘SPAM‘]
11
12
13 >>> s = SapmFilter()
14 >>> s.init()
15 >>> s.filter([‘SPAM‘,‘EFF‘,‘A‘,‘SPAM‘])

  调查继承 想要查看一个类是否是另一个类的子类 ,可以用 内置的 issubclass 函数

 1 >>> issubclass(SapmFilter,Filter)
 2 True
 3 >>> issubclass(Filter,SapmFilter)
 4 False
 5 #查看已知类的父类
 6 >>> SapmFilter.__bases__
 7 (<class __main__.Filter at 0x0299B0D8>,)
 8 >>> s = SapmFilter()
 9 #查看 对象是否是类的实例
10 >>> isinstance(s,SapmFilter)
11 True
12 >>> isinstance(s,Filter)
13 True
14 >>> isinstance(s,str)
15 False

  多个超类  多重继承  尽量少用,且如果一个方法如果从多个超类继承(也就是两个超类具有相同名字的不同方法),先继承类中的方法会重写后继承类中的方法

 1 >>> class A:
 2     def aa(self):
 3         print "this is a"
 4
 5
 6 >>> class B:
 7     def bb(self):
 8         print "this is b"
 9
10
11 >>> class c(A,B):
12     pass
13
14 >>> cc = c()
15
16
17 >>> cc.aa()
18 this is a
19 >>> cc.bb()
20 this is b
21
22 >>> c.__bases__
23 (<class __main__.A at 0x0299B148>, <class __main__.B at 0x0299B1B8>)
时间: 2024-10-06 12:04:57

python学习6 -对象的相关文章

Python学习_01_对象

之前关于python的知识比较零散,这一个系列的随笔将python重新学习整理一遍.学习书籍<Python核心编程>第二版. Python对象基础 python并不是一个单纯面向对象的语言,他融合了其他语言,如函数式语言的特性.但是python的面向对象也是很强大的. 所有的Python对象都具有三个属性:身份(id),类型(type),值(value).身份属性可以通过内建函数id()获得,可以看做是对象的内存地址,每个对象的id值都是唯一的,所以可以用id来判断两个对象是否是同一块内存的不

python学习之对象的三大特性

在面向对象程序设计中,对象可以看做是数据(特性)以及由一系列可以存取.操作这些数据的方法所组成的集合.编写代码时,我们可以将所有功能都写在一个文件里,这样也是可行的,但是这样不利于代码的维护,你总不希望维护代码前,还需要从头至尾的通读一遍吧,就好像一间杂乱无章的房子,你想找一件想要的东西,但是需要地毯式的搜索一遍,甚至多遍才能找到.很明显,这样做的话,很浪费我们的时间. 多态:顾名思义就是多种形态,即便不知道变量所引用的对象类型是什么,依旧可以对它操作,而它也会根据对象(或类)类型的不同而表现出

Python学习之对象基础

Python对象特性 0x01:所有Python对象都有三个特性以及属性     *身份:每一个对象都有一个唯一的身份标识自己,任何一个都可以用内建函数id()来得到.     *类型:决定了可以保存什么样的类型的值,可以进行什么样的操作,可以遵循什么样的规则, 用内建函数type()可以查看.     *值:对象表示的数字 0x02:Python对象的类型   *数字     -整型 -长整型 -布尔型 -浮点型 -复数型   *字符串   *列表    *元组  *字典   *模块    *

python学习笔记-对象持久化保存与恢复

序列化的概念很简单.内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给其他人.你会怎么做?嗯, 这取决于你想要怎么保存,怎么重用,发送给谁.很多游戏允许你在退出的时候保存进度,然后你再次启动的时候回到上次退出的地方.(实际上, 很多非游戏程序也会这么干.) 在这个情况下, 一个捕获了当前进度的数据结构需要在你退出的时候保存到磁盘上,接着在你重新启动的时候从磁盘上加载进来.这个数据只会被创建它的程序使用,不会发送到网络上,也不会被其它程序读取.因此,互操作的问题被限制在保证新版本的程序能

python学习面对对象三大特性

一. 继承 1. 单继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类. 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制. 如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,它提供了一些常见方法(如__str__)的实现 语法: class 派生类名(基类名) ............. 子类以及子类实例化的对象,可以访问父类的任何

python学习之-对象的的初始化与__init__方法

class OldboyStudent: # name='xxxx' # 相似的特征: school = 'oldboy' # 相似的技能 def choose_course(self): print('choosing course....') stu1=OldboyStudent()stu2=OldboyStudent()stu3=OldboyStudent() 对象的本质也是一个名称空间stu1.name='王三炮'stu1.gender='male'stu1.age=38 stu2.na

Python学习笔记_Python对象

Python学习笔记_Python对象 Python对象 标准类型 其他内建类型 类型对象和type类型对象 Python的Null对象None 标准类型操作符 对象值的比较 对象身份比较 布尔类型 标准类型的内建函数 typeObj cmpobj1 obj2 strobj reprobj typeobj isinstanceobj 标准类型的分类 存储模型 更新模型 访问模型 不支持的类型 Python学习笔记_Python对象 首先来理解一个通俗的含义,什么是对象?其实对象无论在什么语言里面

Python学习笔记_Chapter 6定制数据对象

1. 有用的BIF a. 判断字符串中是否包含子字符串 1 if s_a in s_b: b. pop() 描述:从指定的列表位置删除并返回一个数据项. 1 (sarah_name,sarah_dob)=l_rah.pop(0),l_rah.pop(0) 2 #pop(0)中0位置为list中第一个数据项 3 #第一次执行pop赋值给sarah_name c. strip() 输入的是字符串,返回的是列表 d.open 读文件时可以多种方式打开文件,取出的数据是不同的,可以是文本也可以是二进制.

python学习手册——1介绍python对象类型

在python ,数据以对象的形式出现--无论是python提供的内置对象,还是使用python或是像C扩展库这样的扩展语言工具创建的对象.尽管在以后才能确定这一概念,但对象无非是内在中的一部分,包含数值和相关操作的集合. 由于对象是python 最基本的概念,从这一章开始我们将会全面地体验python的内置对象类型. python程序可以分解成模块,语句,表达式以及对象,如下所示: 1.程序由模块构成 2.模块包含语句 3.语句包含表达式 4.表达式建立并处理对象 为什么使用内置类型 1.内置