首页 > 代码库 > python之7-3对象的信息/方法获取
python之7-3对象的信息/方法获取
<style></style><style></style>
我们可以用
dir()
来获取一个类,一个模块,一个字符串的信息/方法例如:
#可以列出Image模块的方法>>import Image>>dir(Image)
#列出字符串abc的信息,字符串abc其实是类str,也就是列出了str的方法>>dir(‘abc‘)#那么应该有一个方法是__len__()>>‘abc‘.__len__()3#而len(‘abc‘),也可以获取字符串长度,因为len()就是调用的类str中的__len__ 因此#根据这个特性,我们可以在自定义类中,定义一个def __len__()来设置一个返回值.#这样子,当len()搞定这个自定义类的实例的时候,就会调用自定义类中的__len__ 从而返回我们想要的数值#例如:#!/usr/bin/env python# coding = utf-8class test(object): def __len__(self): return 1test_len = test()print len(test_len)aaa103439@aaa103439-pc:~/桌面/python$ python test8.py 1
- 还记得那个类模板么?
class 类名():类变量名 =类名.类变量名 #调用类变量 def _init_(self,参数1,参数2): #这里的参数也可以没有,即可以直接 self.属性 = 值 而self每次对应的就是实例自己 self.属性1 = 参数1 self.属性2 = 参数2 def 实例方法函数名(self,方法变量1,方法变量2): 函数体实例名 = 类名(参数1,参数2) #实例创建实例名.实例方法函数名() #实例动作函数调用
getattr()
可获取一个属性,如果不存在,可以加一个默认值,如果添加了默认值则返回ture
#!/usr/bin/env python# coding=utf-8class test(object): def __init__(self, a): self.a = a self.b = 1 def __len__(self): return 1#这里可以看到类test有两个属性a和b和一个方法__len__test_attr = test(0)if hasattr(test_attr, ‘a‘): print getattr(test_attr, ‘a‘)if hasattr(test_attr, ‘b‘): print getattr(test_attr, ‘b‘)if not hasattr(test_attr, ‘c‘): print getattr(test_attr, ‘c‘, 404) setattr(test_attr, ‘c‘, 2) print getattr(test_attr, ‘c‘)
aaa103439@aaa103439-pc:~/桌面/python$ python test8.py 014042
那么我们应该怎么来用这些获取属性的函数呢?正确的应用应该是这样子的,即判定一个对象是否有这个属性或者方法,如果有,我们就去调用它.
例如:这个例子有点脱裤子放屁的赶脚...不过只是为了说明一种用法
#!/usr/bin/env python# coding=utf-8import Imagedef test_image(fb): if hasattr(fb, ‘thumbnail‘) and hasattr(fb, ‘size‘): print fb.size fb.thumbnail((20,20)) fb.save(‘/home/aaa103439/桌面/2.png‘,‘png‘) return Noneim = Image.open(‘/home/aaa103439/桌面/1.png‘)test_image(im)print Image.open(‘/home/aaa103439/桌面/2.png‘).size
aaa103439@aaa103439-pc:~/桌面/python$ python test9.py (159, 142)(20, 17)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。