“歪鹅鹅”通过精心收集,向本站投稿了10篇Python中获取对象信息的方法,下面是小编整理后的Python中获取对象信息的方法,欢迎您阅读,希望对您有所帮助。
- 目录
篇1:Python中获取对象信息的方法
作者:廖雪峰 字体:[增加 减小] 类型:
这篇文章主要介绍了Python中获取对象信息的方法,是Python学习当中的基础知识,需要的朋友可以参考下
当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢?
使用type
首先,我们来判断对象类型,使用type()函数:
基本类型都可以用type()判断:
>>>type(123) 如果一个变量指向函数或者类,也可以用type()判断: >>>type(abs) 但是type()函数返回的是什么类型呢?它返回type类型,如果我们要在if语句中判断,就需要比较两个变量的type类型是否相同: >>>type(123)==type(456)True>>>type(‘abc‘)==type(‘123‘)True>>>type(‘abc‘)==type(123)False 但是这种写法太麻烦,Python把每种type类型都定义好了常量,放在types模块里,使用之前,需要先导入: >>>import types>>>type(‘abc‘)==types.StringTypeTrue>>>type(u‘abc‘)==types.UnicodeTypeTrue>>>type([])==types.ListTypeTrue>>>type(str)==types.TypeTypeTrue 最后注意到有一种类型就叫TypeType,所有类型本身的类型就是TypeType,比如: >>>type(int)==type(str)==types.TypeTypeTrue 使用isinstance() 对于class的继承关系来说,使用type()就很不方便。我们要判断class的类型,可以使用isinstance()函数。 我们回顾上次的例子,如果继承关系是: 代码如下: object ->Animal ->Dog ->Husky 那么,isinstance()就可以告诉我们,一个对象是否是某种类型。先创建3种类型的对象: >>>a = Animal()>>>d = Dog()>>>h = Husky() 然后,判断: >>>isinstance(h, Husky)True 没有问题,因为h变量指向的就是Husky对象。 再判断: >>>isinstance(h, Dog)True h虽然自身是Husky类型,但由于Husky是从Dog继承下来的,所以,h也还是Dog类型。换句话说,isinstance()判断的是一个对象是否是该类型本身,或者位于该类型的父继承链上。 因此,我们可以确信,h还是Animal类型: >>>isinstance(h, Animal)True 同理,实际类型是Dog的d也是Animal类型: >>>isinstance(d, Dog) and isinstance(d, Animal)True 但是,d不是Husky类型: 能用type()判断的基本类型也可以用isinstance()判断: >>>isinstance(‘a‘, str)True>>>isinstance(u‘a‘, unicode)True>>>isinstance(‘a‘, unicode)False 并且还可以判断一个变量是否是某些类型中的一种,比如下面的代码就可以判断是否是str或者unicode: >>>isinstance(‘a‘, (str, unicode))True>>>isinstance(u‘a‘, (str, unicode))True 由于str和unicode都是从basestring继承下来的,所以,还可以把上面的代码简化为: >>>isinstance(u‘a‘, basestring)True 使用dir() 如果要获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list,比如,获得一个str对象的所有属性和方法: >>>dir(‘ABC‘)[‘__add__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__getnewargs__‘, ‘__getslice__‘, ‘__gt__‘, ‘__hash__‘, ‘__init__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__mod__‘, ‘__mul__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__rmod__‘, ‘__rmul__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘_formatter_field_name_split‘, ‘_formatter_parser‘, ‘capitalize‘, ‘center‘, ‘count‘, ‘decode‘, ‘encode‘, ‘endswith‘, ‘expandtabs‘, ‘find‘, ‘format‘, ‘index‘, ‘isalnum‘, ‘isalpha‘, ‘isdigit‘, ‘islower‘, ‘isspace‘, ‘istitle‘, ‘isupper‘, ‘join‘, ‘ljust‘, ‘lower‘, ‘lstrip‘, ‘partition‘, ‘replace‘, ‘rfind‘, ‘rindex‘, ‘rjust‘, ‘rpartition‘, ‘rsplit‘, ‘rstrip‘, ‘split‘, ‘splitlines‘, ‘startswith‘, ‘strip‘, ‘swapcase‘, ‘title‘, ‘translate‘, ‘upper‘, ‘zfill‘] 类似__xxx__的属性和方法在Python中都是有特殊用途的,比如__len__方法返回长度, 在Python中,如果你调用len()函数试图获取一个对象的长度,实际上,在len()函数内部,它自动去调用该对象的__len__()方法,所以,下面的代码是等价的: >>>len(‘ABC‘)3>>>‘ABC‘.__len__()3 我们自己写的类,如果也想用len(myObj)的话,就自己写一个__len__()方法: >>>class MyObject(object):... def __len__(self):... return 100...>>>bj = MyObject()>>>len(obj)100 剩下的都是普通属性或方法,比如lower()返回小写的字符串: >>>‘ABC‘.lower()‘abc‘ 仅仅把属性和方法列出来是不够的,配合getattr()、setattr()以及hasattr(),我们可以直接操作一个对象的状态: >>>class MyObject(object):... def __init__(self):... self.x = 9... def power(self):... return self.x * self.x...>>>bj = MyObject() 紧接着,可以测试该对象的属性: >>>hasattr(obj, ‘x‘) # 有属性‘x‘吗?True>>>obj.x9>>>hasattr(obj, ‘y‘) # 有属性‘y‘吗?False>>>setattr(obj, ‘y‘, 19) # 设置一个属性‘y‘>>>hasattr(obj, ‘y‘) # 有属性‘y‘吗?True>>>getattr(obj, ‘y‘) # 获取属性‘y‘19>>>obj.y # 获取属性‘y‘19 如果试图获取不存在的属性,会抛出AttributeError的错误: 可以传入一个default参数,如果属性不存在,就返回默认值: >>>getattr(obj, ‘z‘, 404) # 获取属性‘z‘,如果不存在,返回默认值404404 也可以获得对象的方法: >>>hasattr(obj, ‘power‘) # 有属性‘power‘吗?True>>>getattr(obj, ‘power‘) # 获取属性‘power‘ 小结 通过内置的一系列函数,我们可以对任意一个Python对象进行剖析,拿到其内部的数据。要注意的是,只有在不知道对象信息的时候,我们才会去获取对象信息。如果可以直接写: sum = obj.x + obj.y 就不要写: sum = getattr(obj, ‘x‘) + getattr(obj, ‘y‘) 一个正确的用法的例子如下: def readImage(fp): if hasattr(fp, ‘read‘): return readData(fp) return None 假设我们希望从文件流fp中读取图像,我们首先要判断该fp对象是否存在read方法,如果存在,则该对象是一个流,如果不存在,则无法读取。hasattr()就派上了用场。 请注意,在Python这类动态语言中,有read()方法,不代表该fp对象就是一个文件流,它也可能是网络流,也可能是内存中的一个字节流,但只要read()方法返回的是有效的图像数据,就不影响读取图像的功能。 , 分享给大家供大家参考。具体如下: 主要核心代码如下: sUrl = ‘www.163.com‘sock = urllib2.urlopen(sUrl) sock.headers.values() 希望本文所述对大家的Python程序设计有所帮助。 作者:Sephiroth 字体:[增加 减小] 类型: 本文实例讲述了Python获取邮件地址的方法, Python获取邮件地址的方法 , 分享给大家供大家参考。具体实现方法如下: import email.Utils def getCleanMailAddress(strAddr): emails = email.Utils.parseaddr(strAddr.lower) return emails[1] 希望本文所述对大家的Python程序设计有所帮助。 python 文件和路径操作函数小结 python二叉树遍历的实现方法 Python中字典(dict)和列表(list)的排序方 python基础教程之字典操作详解 Python 连连看连接算法 python实现socket端口重定向示例 python使用mysqldb连接数据库操作方法示例 Python备份Mysql脚本 Python操作列表的常用方法分享 比较详细Python正则表达式操作指南(re使用 Python入门教程 超详细1小时学会 python 中文乱码问题深入分析 比较详细Python正则表达式操作指 Python字符串的encode与decode研 Python open读写文件实现脚本 Python enumerate遍历数组示例应 Python 深入理解yield Python+Django在windows下的开发 python 文件和路径操作函数小结 python 字符串split的用法分享 这篇文章主要介绍了python获取android设备的GPS信息脚本分享,本文直接给出实现代码,需要的朋友可以参考下 在android上,我们可以使用QPython来编写、执行Python脚本,它对很多android 系统函数进行了方便的封装,使用QPython编写功能简单的小程序异常方便。 这个示例是我之前用来读取手机位置信息并作为进一步处理数据的基础脚本。 代码如下: # -*- coding: utf-8 -*- import androidhelper import time from math import radians droid = androidhelper.Android droid.startSensingTimed(1, 250) droid.startLocating() while 1: gpsdata = droid.readLocation().result s6data = droid.sensorsReadOrientation().result if len(gpsdata)>0: print gpsdata[‘gps‘][‘bearing‘] #取得Gps导向(bearing)(角度) if len(s6data)>0: print s6data[0] #取得罗盘方位角(azimuth)(弧度) time.sleep(0.5) droid.stopLocating() droid.stopSensing() 作者:Sephiroth 字体:[增加 减小] 类型: pyid3不好用,常常有不认识的. mutagen不错,不过默认带的easyid3不会读取注释,需要手工hack一下 Python代码如下: from mutagen.mp3 import MP3import mutagen.id3from mutagen.easyid3 import EasyID3EasyID3.valid_keys[“comment”]=“COMM::‘XXX‘”id3info = MP3(“xxx.mp3”, ID3=EasyID3)for k, v in id3info.items(): print k,v 希望本文所述对大家的Python程序设计有所帮助, 作者:重负在身 字体:[增加 减小] 类型:转载 这篇文章主要介绍了python获取当前日期和时间的方法,涉及Python操作日期与时间的相关技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python获取当前日期和时间的方法,分享给大家供大家参考。具体如下: import datetime# Get a datetime bjectnow = datetime.datetime.now# General functions print “Year: %d” % now.yearprint “Month: %d” % now.monthprint “Day: %d” % now.dayprint “Weekday: %d” % now.weekday()# Day of week Monday = 0, Sunday = 6print “Hour: %d” % now.hourprint “Minute: %d” % now.minuteprint “Second: %d” % now.secondprint “Microsecond: %d” % now.microsecond# ISO Functionsprint “ISO Weekday: %d” % now.isoweekday()# Day of week Monday = 1, Sunday = 7print “ISO Format: %s” % now.isoformat()# ISO format, e.g. -12-24T07:10:52.458593print “ISO Calendar: %s” % str(now.isocalendar())# Tuple of (ISO year, ISO week number, ISO weekday)# Formatted dateprint now.strftime(“%Y/%m/%d”) 希望本文所述对大家的Python程序设计有所帮助, (一)教学要求 1、知道信息来源的多样性。 2、知道获取信息的多种途径。 (二)教学设计建议 本节安排一个课时,教材中安排了两个讨论交流活动,分别说明信息来源的多样性和信息获取方法的多样性。重点是让学生了解信息获取方法的多样性,知道网络是获取信息的一个重要途径,但通过其他的途径同样可以获取信息。 每一位同学的家庭背景各不相同,以前所接受的教育的程度也有高低,单独的一个同学很难把教材中设计的两个题目没有遗漏地全部回答出来。通过讨论交流活动,就能发挥每一个同学的积极性,做到相互补充共同提高。同时,培养合作精神也是现代社会对每一个社会人的基本要求。为此,建议以四个同学为一个小组来开展讨论活动,可以安排前后排各两位同学共四位同学为一个小组,也可以任意组合。 每一个小组的四位同学中,可以适当进行任务安排,其中一位同学任组长,一位同学是记录员,这些工作在不同的活动中应该由各位同学轮流担任。 本节的内容是本章的核心内容,其余小节的内容是本节内容在某一方面(网络资源)的细化。 《获取信息的方法》教学反思 根据本节课的学习目标,结合具体操作示例,采用学生自主探充、分组协作为主,教师指导为辅的案例分析教学法。具体过程如下: 学生对上网特别感兴趣,但如果要求所有学生统一针对具体任务进行操作,不是很容易的事情,所以要求教师根据学校的条件结合学生的现有基础,对教学任务可以作适当的调整,不管是采取何种形式的任务,其最终的目的是一致的,那就是要求学生掌握这两种信息检索方式,为解决生活和学习中的实际问题服务。 1、创设情景,提出问题。 常见的情景问题有:请大家说说从哪些提供信息搜索服务的网站获取过信息?(引发学生的回忆和思考)针对大多数学生所提及的网站,继续设问,请哪位同学来谈一谈你的体会。教师根据学生的.叙述结合本节的目标,引出本节的任务。 2、引出活动任务。 通过搜索引擎在因特网检索有关电子地图的信息,为人们出行带来便利。通过操作和讨论交流,体会分类检索和关键词检索的操作过程及各自的特点。 3、分析活动任务,分解任务。 体会分类检索和关键词检索的操作过程及各自的特点,通过搜索引擎检索因特网上电子地图,要求标识出到达目的地的出行路线,制作出行的参考方案。 分解:选择雅虎Google或百度等专业的搜索网站;通过搜索引擎进行相关检索;讨论交流他们的操作过程和各自的特点;利用下载工具下载电子地图。 4、提出解决问题的策略和方法。 针对分解的任务,教师要引导学生不断提出问题,如:每种检索方式的操作规程是怎样的,各自的特点是什么,有没有通用性,你更喜欢哪种检索方式,理由是什么,你觉得还有改进的必要吗,你的改进建议是什么,你打算如何向网站反馈你的建议通过学生的思考交流,形成各自的认识。促进学生养成自主分析、自主探究解决问题的基本信息素养。 5、自主探究学习,结合必要的讨论,完成任务。 6、课堂评价(结合过程性评价指标有选择地进行)。 7、课堂总结、巩固知识。 学生总结:通过活动过程的探究交流和体验,我们掌握了这两种信息检索方式的操作过程,为解决生活和学习中需要进行信息检索的实际问题打下了基础。 8、后续活动。 根据活动的处理建议,结合实际情况,完成活动,巩固本节知识、技能和分析方法。针对活动的完成情况,要求学生思考关于如何判段通过信息检索方式所获取的信息的价值,为下一节课活动作准备。 在Visual Foxpro软件的程序设计中,我们经常需要关注其程序设计的环境,尤其是获得Windows软件系统注册的用户名及单位名称,为此我们设计了一个在Windows 3.X、Window 95、Windows 98及Windows NT 4.0环境下均通用的一个子程序,可以满足上述的需要。 #DEFINE MACHINE_ID -2147483646 #DEFINE VER_PATH “SoftwareMicrosoftWindowsCurrentVersion” *--声明Windows API 函数 DECLARE INTEGER GetProfileString IN Win32API AS GetProStr ; String cSection, String cKey, String cDefault, ; String @cBuffer, Integer nBufferSize *-- 声明注册表函数 DECLARE Integer RegOpenKeyEx IN Win32API ; Integer nKey, String @cSubKey, Integer nReserved,; Integer nAccessMask, Integer @nResult DECLARE Integer RegQueryValueEx IN Win32API ; Integer nKey, String cValueName, Integer nReserved,; Integer @nType, String @cBuffer, Integer @nBufferSize DECLARE Integer RegCloseKey IN Win32API ; Integer nKey *-- 初始化DLL调用变量 utBuffer = SPACE(128) STORE 0 TO Reserved, Result, Type BufferSize = LEN(OutBuffer) STORE “” TO OutUser, OutCompany *-- 通过VFP的OS()函数判定当前操作系统类型 DO CASE CASE UPPER(OS()) = “WINDOWS 4” *-- 系统为Windows 95 以上版本 Error = RegOpenKeyEx(MACHINE_ID, VER_PATH, ; Reserved, 1, @Result) IF Error = 0 Type = 0 utBuffer = SPACE(128) BufferSize = LEN(OutBuffer) Error = RegQueryValueEx(Result, “RegisteredOwner”, Reserved, ; @Type, @OutBuffer, @BufferSize) IF Error = 0 AND OutBuffer CHR(0) utUser = LEFT(OutBuffer, BufferSize - 1) ENDIF Type = 0 utBuffer = SPACE(128) BufferSize = LEN(OutBuffer) Error = RegQueryValueEx(Result, “RegisteredOrganization”, Reserved, ; @Type, @OutBuffer, @BufferSize) IF Error = 0 AND OutBuffer CHR(0) utCompany = LEFT(OutBuffer, BufferSize - 1) ENDIF ENDIF =RegCloseKey(Result) CASE UPPER(OS()) = “WINDOWS NT” *-- 系统为Windows NT Error = RegOpenKeyEx(MACHINE_ID, KEY_SHARED_TOOLS_LOCATION, ; Reserved, 1, @Result) IF Error = 0 Type = 0 utBuffer = SPACE(128) BufferSize = LEN(OutBuffer) Error = RegQueryValueEx(Result, “RegisteredOwner”, Reserved, ; @Type, @OutBuffer, @BufferSize) IF Error = 0 AND OutBuffer CHR(0) utUser = LEFT(OutBuffer, BufferSize - 1) ENDIF Type = 0 utBuffer = SPACE(128) BufferSize = LEN(OutBuffer) Error = RegQueryValueEx(Result, “RegisteredOrganization”, Reserved, ; @Type, @OutBuffer, @BufferSize) IF Error = 0 AND OutBuffer CHR(0) utCompany = LEFT(OutBuffer, BufferSize - 1)篇2:Python获取服务器信息的最简单实现方法
篇3:Python获取邮件地址的方法
篇4:Python获取当前时间的方法
最近更 新
热 点 排 行
篇5:python获取android设备的GPS信息脚本
篇6:Python读取mp3中ID3信息的方法
篇7:python获取当前日期和时间的方法
篇8:信息获取的方法学习指导
篇9:《获取信息的方法》教学反思
篇10:VFP中获取Windows注册信息
Python中获取对象信息的方法(精选10篇)