python之7-3对象的信息/方法获取
我们可以用
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-8
class test(object):
def __len__(self):
return 1
test_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-8
class 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
0
1
404
2
那么我们应该怎么来用这些获取属性的函数呢?正确的应用应该是这样子的,即判定一个对象是否有这个属性或者方法,如果有,我们就去调用它.
例如:这个例子有点脱裤子放屁的赶脚...不过只是为了说明一种用法
#!/usr/bin/env python
# coding=utf-8
import Image
def 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 None
im = 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)
python之7-3对象的信息/方法获取的更多相关文章
- PDO 学习与使用 ( 一 ) :PDO 对象、exec 方法、query 方法与防 SQL 注入
1.安装 PDO 数据库抽象层 PDO - PHP Data Object 扩展类库为 PHP 访问数据库定义了一个轻量级的.一致性的接口,它提供了一个数据访问抽象层,针对不同的数据库服务器使用特定的 ...
- 关于SessionFactory的不同实现类分别通过getCurrentSession()方法 和 openSession() 方法获取的Session对象在保存对象时的一些区别
一.单向多对一关联关系 一).使用LocalSessionFactoryBean类,即在applicationContext中配置的 <!-- 配置SessionFactory 使用LocalS ...
- [Android Pro] 关于inputStream.available()方法获取文件的总大小
reference to :http://hold-on.iteye.com/blog/1017449 如果用inputStream对象的available()方法获取流中可读取的数据大小,通常我们调 ...
- getComputedStyle方法获取元素CSS值
javascript的style属性只能获取内联样式,对于外部样式和嵌入式样式需要用currentStyle属性.但是,currentStyle在FIrefox和Chrome下不支持,需要用getCo ...
- (判断url文件大小)关于inputStream.available()方法获取下载文件的总大小
转自:http://hold-on.iteye.com/blog/1017449 如果用inputStream对象的available()方法获取流中可读取的数据大小,通常我们调用这个函数是在下载文件 ...
- python中类与对象及其绑定方法的定义
面向对象编程 什么是面向对象? 面向过程:将需要解决的问题按步骤划分,一步一步完成每一个步骤,而且 步骤之间有联系. 优点:复杂问题可以分步完成 缺点:扩展性很差,维护性差.如果中间 ...
- python学习笔记8--面向对象--属性和方法详解
属性: 公有属性 (属于类,每个类一份) 普通属性 (属于对象,每个对象一份) 私有属性 (属于对象,跟普通属性相似,只是不能通过对象直接访问) 方法:(按作用) 构造方法 析构函数 方法: ...
- 1.面向过程编程 2.面向对象编程 3.类和对象 4.python 创建类和对象 如何使用对象 5.属性的查找顺序 6.初始化函数 7.绑定方法 与非绑定方法
1.面向过程编程 面向过程:一种编程思想在编写代码时 要时刻想着过程这个两个字过程指的是什么? 解决问题的步骤 流程,即第一步干什么 第二步干什么,其目的是将一个复杂的问题,拆分为若干的小的问题,按照 ...
- Python学习之旅—生成器对象的send方法详解
前言 在上一篇博客中,笔者带大家一起探讨了生成器与迭代器的本质原理和使用,本次博客将重点聚焦于生成器对象的send方法. 一.send方法详解 我们知道生成器对象本质上是一个迭代器.但是它比迭代器对 ...
随机推荐
- eclipse:运行 Android 项目时出现 “Unable to execute dex: Multiple dex files define” 解决方法
android 项目在eclipse 出现Unable to execute dex: Multiple dex files define Conversion to Dalvik format fa ...
- [翻译]localStorage性能的好坏
原文地址:Is localStorage performance a problem? 如果说2012年对于web开发世界来说有什么值得记住的事的话,关于localStorage性能的争论一定高居榜首 ...
- Qt全局热键(windows篇)(使用RegisterHotKey和句柄进行注册)
转载:http://www.cuteqt.com/blog/?p=2088 Qt对于系统底层,一直没有很好的支持,例如串口并口通信,还有我们经常都会用到的全局热键,等等.既然Qt可能出于某种原因,不对 ...
- 用MarkDown来排版写作
Latex排版系统太复杂,MD很好用,微软开源了一套Madoko的开源在线MD编辑器,它提供了一台MD扩展,可以生成PDF(中间先生成Tex,再生成的PDF),幻灯片还有html.非常方便.写作,写p ...
- git设置过滤忽略的文件或文件夹
我们一般向代码仓库提交项目的时候,一般需要忽略编译生成的中间文件以及文件夹的提交,因为它们是无用的,而且也会占用仓库的空间.一般只用提交.pro,.sln,makefile,程序源文件等编译必须用到的 ...
- MFC界面更新实现方法
1.更新窗口 即采用UpdateWindow()函数立即发送WM_PAINT消息更新整个窗口. void CEditTestDlg::OnBnClickedBtnSysUpdate() { CStri ...
- HDOJ 1395 2^x mod n = 1
Problem Description Give a number n, find the minimum x(x>0) that satisfies 2^x mod n = 1. Input ...
- HDU_2049——部分错位排列,概率论
Problem Description 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样 ...
- socket实例2
第二个实例创建一个java工程,基于tomcat服务器,程序运行时会启动客户端,实现了一个客户端向其他的客户端发送即时信息的功能 MainWindow.java package com.jikexue ...
- (转)pem, cer, p12 and the pains of iOS Push Notifications encryption
转自:http://cloudfields.net/blog/ios-push-notifications-encryption/ The serious pains of setting up a ...