python之7-3對象的信息/方法獲取

  • 咱們能夠用dir()來獲取一個類,一個模塊,一個字符串的信息/方法python

  • 例如:函數

#能夠列出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
  • 那麼咱們應該怎麼來用這些獲取屬性的函數呢?正確的應用應該是這樣子的,即斷定一個對象是否有這個屬性或者方法,若是有,咱們就去調用它.spa

  • 例如:這個例子有點脫褲子放屁的趕腳...不過只是爲了說明一種用法code

#!/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)
相關文章
相關標籤/搜索