• 我们可以用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对象的信息/方法获取的更多相关文章

  1. PDO 学习与使用 ( 一 ) :PDO 对象、exec 方法、query 方法与防 SQL 注入

    1.安装 PDO 数据库抽象层 PDO - PHP Data Object 扩展类库为 PHP 访问数据库定义了一个轻量级的.一致性的接口,它提供了一个数据访问抽象层,针对不同的数据库服务器使用特定的 ...

  2. 关于SessionFactory的不同实现类分别通过getCurrentSession()方法 和 openSession() 方法获取的Session对象在保存对象时的一些区别

    一.单向多对一关联关系 一).使用LocalSessionFactoryBean类,即在applicationContext中配置的 <!-- 配置SessionFactory 使用LocalS ...

  3. [Android Pro] 关于inputStream.available()方法获取文件的总大小

    reference to :http://hold-on.iteye.com/blog/1017449 如果用inputStream对象的available()方法获取流中可读取的数据大小,通常我们调 ...

  4. getComputedStyle方法获取元素CSS值

    javascript的style属性只能获取内联样式,对于外部样式和嵌入式样式需要用currentStyle属性.但是,currentStyle在FIrefox和Chrome下不支持,需要用getCo ...

  5. (判断url文件大小)关于inputStream.available()方法获取下载文件的总大小

    转自:http://hold-on.iteye.com/blog/1017449 如果用inputStream对象的available()方法获取流中可读取的数据大小,通常我们调用这个函数是在下载文件 ...

  6. python中类与对象及其绑定方法的定义

    面向对象编程 什么是面向对象? 面向过程:将需要解决的问题按步骤划分,一步一步完成每一个步骤,而且          步骤之间有联系. 优点:复杂问题可以分步完成 缺点:扩展性很差,维护性差.如果中间 ...

  7. python学习笔记8--面向对象--属性和方法详解

    属性: 公有属性  (属于类,每个类一份) 普通属性  (属于对象,每个对象一份) 私有属性    (属于对象,跟普通属性相似,只是不能通过对象直接访问) 方法:(按作用) 构造方法 析构函数 方法: ...

  8. 1.面向过程编程 2.面向对象编程 3.类和对象 4.python 创建类和对象 如何使用对象 5.属性的查找顺序 6.初始化函数 7.绑定方法 与非绑定方法

    1.面向过程编程 面向过程:一种编程思想在编写代码时 要时刻想着过程这个两个字过程指的是什么? 解决问题的步骤 流程,即第一步干什么 第二步干什么,其目的是将一个复杂的问题,拆分为若干的小的问题,按照 ...

  9. Python学习之旅—生成器对象的send方法详解

    前言 在上一篇博客中,笔者带大家一起探讨了生成器与迭代器的本质原理和使用,本次博客将重点聚焦于生成器对象的send方法. 一.send方法详解  我们知道生成器对象本质上是一个迭代器.但是它比迭代器对 ...

随机推荐

  1. 使用hexo创建github博客

    前言 前面说过,之前用wordpress辛辛苦苦搭建的博客,因为服务器和域名的问题挂掉了.后来发现github也能够搭建自己的博客,不需要去关心主机域名的问题,而且还能使用Markdown来写博客,就 ...

  2. 淺析LED、LED背光、OLED的技術原理與區別

    眼下很多廠商在推廣自己產品的時候都偷換了概念.明明是LED背光顯示器卻要簡稱為LED顯示器.事實上LED顯示器和目前的LED背光顯示器有著本質的區別.當然容易讓大家混淆的還有個技術非常先進的OLED. ...

  3. JavaScript 中的非真值

    False values 下面这些值将被计算出 false (also known as Falsy values): false undefined null 0 NaN 空字符串 ("& ...

  4. 使用activeMQ实现jms

    一:jms介绍         jms说白了就是java message service,是J2EE规范的一部分,跟jdbc差不多,sun只提供了接口,由各个厂商(provider)来进行具体的实现, ...

  5. Linux read语法及浅析

    read命令 -n(不换行) -p(提示语句) -n(字符个数) -t(等待时间) -s(不回显) 1.基本读取read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说).得到输入后, ...

  6. BZOJ1651: [Usaco2006 Feb]Stall Reservations 专用牛棚

    1651: [Usaco2006 Feb]Stall Reservations 专用牛棚 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 509  Sol ...

  7. C#中string类型是什么类型

  8. Codeforce 221 div1

    A 只要打个表就能发现,1,6,8,9的所有排列就可以产生0~6的余数了... 所以...走不下去的时候一定要打表... #define rep(i,n) for(int i=0 ; i<(n) ...

  9. 常用的MIME类型(资源的媒体类型)

    后缀名 MIME名称 *.3gpp audio/3gpp, video/3gpp *.ac3 audio/ac3 *.asf allpication/vnd.ms-asf *.au audio/bas ...

  10. UserManageSys

    JSP部分: err.jsp <%@ page language="java" import="java.util.*" pageEncoding=&qu ...