java中的接口是类吗
276
2022-08-29
python对象解释说明以及操作实例(python面向对象例题)
#coding=utf8 '''Python使用对象模型来存储数据。Python对象都拥有三个特性:身份、类型、值。身份:每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数id()来获取。这个值可以被认为是该对象的内存地址。类型:对象的类型决定该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。可以使用内建函数type查看Python对象的类型。Python中类型也是对象,type返回的对象不是简单的字符串。值:对象表示的数据项。上面三个特性在对象创建的时候就被赋值,除了值之外,其它两个特性都是只读的。对象属性:Python用点(.)标记来访问属性。属性包括相应对象的名字等等。最常用的属性是函数和方法,不过有一些python类型也有数据属性。含有数据属性的对象包括(但不限于):类、类实例、模块、复数和文件。标准类型(基本数据类型):数字、整型、布尔型、长整型、浮点型、复数型、字符串、列表、元组、字典其他内建类型:类型、Null对象(None)、文件、集合/固定集合、函数/方法、模块、类所有类型对象的类型都是type,它是所有Python类型的根和所有Python标准类的默认元类(metaclass)。类就是类型,实例是对应类型的对象。Python有一个特殊的类型,被称作Null对象或者NoneType,它只有一个值,那就None。None没有什么有用的属性,它的布尔值总是False。所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布尔True或False值。空对象、值为零的任何数字或者Null对象None的布尔值都是False。下列对象的布尔值时False:None、False、所有的值为零的数:0(整型)、浮点型(0.0)、0L(长整型)、0.0+0.0j(复数)、""(空字符串)、[](空列表)、()(空元组)、{}(空字典)值不是上面列出来的任何值的对象的布尔值都是True。内部类型:代码、帧、跟踪记录、切片、省略、Xrange代码:代码对象是编译过的Python源代码片段,它是可执行对象。通过调用内建函数compile()可以得到代码对象。代码队形可以被exec命令或eval()内建函数来执行。代码对象本身不包含任何执行环境信息,它是用户自定义函数的核心,在被执行时动态获得上下文。帧:帧对象表示Python的执行栈帧。帧队形包含Python解释器在运行时所需要知道的所有信息。它的属性包括指向上一帧的链接,正在被执行的代码对象,本地及全局名字空间字典以及当前指令等。每次函数调用产生一个新的帧,每一个帧对象都会相应创建一个C栈帧。跟踪记录:当异常发生时,一个包含针对异常的栈跟踪信息的跟踪记录对象被创建。如果一个异常有自己的处理程序,处理程序就可以访问这个跟踪记录对象。切片对象:当使用Python扩展的切片语法时,就会创建切片对象。扩展的切片语法允许对不同的索引切片操作,包括步进切片、多维切片、省略切片。多维切片的语法是:sequence[start1:end1,start2:end2]省略切片的语法是:sequence[...,start1:end1]切片镀锡可以由内建函数slice()生成。步进切片允许利用第三个切片元素进行步进切片,它的语法是:sequence[起始索引:结束索引:步进值]省略对象:省略对象用于扩展切片语法中,起记号作用。这个对象在切片语法中表示省略号。类似Null对象None,省略对象有一个唯一的名字Ellipsis,它的布尔值始终未True。XRange对象:调用内建函数XRange()会生成一个Xrange对象,xrange()是内建函数range()的兄弟版本。用于需要节省内存使用或range()无法完成的超大数据集场合。对象值比较:比较运算符用来判断同类型对象是否相等。数字类型根据数值的大小和符号比较,字符串按照字符序列值进行比较。多个比较操作可以在同一行上进行,求值顺序为从左向右。比较操作是针对对象的值进行的,也就是说比较的是对象的数值而不是对象本身。标准类型值比较运算符:<、>、<=、>=、==、!=对象身份比较:对象身份比较运算符拥有同样的优先级。标准类型对象身份比较运算符:obj1 is obj2 obj1和obj2是同一个对象obj1 is not obj2 obj1和obj2不是同一个对象整数对象和字符串队形是不可变对象,Python会很高效的缓存它们。布尔类型:布尔逻辑运算符and、or、not都是python关键字。优先级的从高到低排序:not>and>or标准类型内建函数:python一些内建函数用于基本对象类型:cmp()、repr()、str()、type()、等同于repr()函数的单发引号(``)运算符。-------------------------------------------------------------------------函数 功能-------------------------------------------------------------------------cmp(obj1, obj2) 比较 obj1 和 obj2, 根据比较结果返回整数 i: i < 0 if obj1 < obj2 i > 0 if obj1 > obj2 i == 0 if obj1 == obj2repr(obj) 或 `obj` 返回一个对象的字符串表示str(obj) 返回对象适合可读性好的字符串表示type(obj) 得到一个对象的类型,并返回相应的type 对象---------------------------------------------------------------------------str()函数得到的字符串可读性好,而repr()函数得到的字符串通常可以用来重新获得该对象。通常情况下obj==eval(repr(obj))等式成立。repr()和``在绝大多数情况下可以通过求值运算符(使用eval()内建函数)重新得到该对象。并不是所有repr()返回的字符串都能够用eval()内建函数得到原来的对象。type()与isinstance():Python不支持方法或函数重载,因此必须保证调用函数或对象的正确性。type()返回任意Python对象类型,而不局限于标准类型。isinstance(object, class-or-type-or-tuple):对象,对象的类型或者类、或者元组性能调试:---------------------------------------------------------------------------------------------1. 减少函数调用次数:每次函数调用都会付出性能代价,要减少函数调用次数,以提高程序性能。2. 对象比较VS对象身份比较:如果对象是不同的,那么变量一定是不同类型的。每一个类型只有一个类型的对象,就没有必要去检查值了。一次这样的调用可能无关紧要,当程序中有很多时,就会影响程序性能。3. 减少查询次数:如果程序做多次比较的话,程序的性能就会有一些差异。例如,为了得到整数的对象类型,解释器首先要查找types这个模块,然后在该模块字典中查找IntType。但这可以通过使用from-import减少一次查询。------------------------------------------------------------------------------------------------类型工厂函数:int() long() float() complex() str() unicode() basestring() list()tuple() type() dict() bool() set() frozenset() object() classmethod()staticmethod() super() property() file()存储模型:-------------------------------------------------------------------------------------------分类 python类型-------------------------------------------------------------------------------------------标量/原子类型 数值(所有的数值类型)、字符串(全部是文字)容器类型 列表、元组、字典--------------------------------------------------------------------------------------------更新模型:-------------------------------------------------------------------------------------------分类 python类型-------------------------------------------------------------------------------------------可变类型 列表、字典不可变类型 数字、字符串、元组--------------------------------------------------------------------------------------------访问模型有三种访问方式:直接存取、顺序、映射-------------------------------------------------------------------------------------------分类 python类型-------------------------------------------------------------------------------------------直接访问 数字顺序访问 字符串、列表、元组映射访问 字典--------------------------------------------------------------------------------------------标准类型分类:-------------------------------------------------------------------------------------------数据类型 存储模型 更新模型 访问模型-------------------------------------------------------------------------------------------数字 Scalar 不可更改 直接访问字符串 Scalar 不可更改 顺序访问列表 Container 可更改 顺序访问元组 Container 不可更改 顺序访问字典 Container 可更改 映射访问--------------------------------------------------------------------------------------------'''from types import IntType,DictType,ClassType,ComplexType,ObjectType,BooleanType,StringType,ListTypeclass PythonObject(object): intType=15 dicType={"name" : 'ewang',"age":intType} listType=[12,'earn',intType] toupleType=(456,12.56,'ewang') complexType=45+5j float=45.6 boolType=True stringType="maytheforce" def cmpType(self,obj): if type(obj) in (IntType,DictType,ClassType,ComplexType,ObjectType,BooleanType,StringType,ListType): print obj def mulSlice(self,obj,st1,ed1,st2,ed2): if type(obj) in ["StringType","ListType"]: return obj[st1:ed1,st2:ed2] else: pass def ellipeseSlice(self,obj,st1,ed1): if self.checkType(obj) in ["StringType","ListType"]: return obj[...,st1:ed1] else: pass def stepSlice(self,obj,st1,ed1,step): if self.checkType(obj) in ["StringType","ListType"]: return obj[st1:ed1:step] else: pass def valueEqual(self,obj1,obj2): if obj1==obj2: return True else: return False def valueLe(self,obj1,obj2): if obj1<=obj2: return True else: return False def valueGe(self,obj1,obj2): if obj1>=obj2: return True else: return False def valueLt(self,obj1,obj2): if obj1
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~