Python 的對象天生擁有一些神奇的方法,它們總被雙下劃線所包圍,它們是面向對象的 Python 的一切。它們是可以給你的類增加魔力的特殊方法,如果你的對象實現(重載)了某一個魔法方法,那麼這個方法就會在特殊的情況下自動被 Python 所調用。
定義對象被 len() 函數調用時的行為。
self 表示對象本身。
必須是一個整數,否則會拋出異常。
class MyTest(object):
def __init__(self):
self.name = 'ab'
self.age = 22
def __len__(self):
# len() 函數一般返回對象(序列)的長度或元素個數
return len(self.__dict__)
sample = MyTest()
print(len(sample))
如果一個類表現得像一個list,要獲取有多少個元素,就得用 len() 函數。 要讓 len() 函數工作正常,類必須提供一個特殊方法__len__(),它返回元素的個數。 示例
class Students(object):
def __init__(self, *args):
self.names = args
def __len__(self):
return len(self.names)
s = Students('a', 'b', 'c')
print(len(s))
1.用法:len(filename),filename.__len__()。
2.返回:len()返回所傳入參數的長度;如果沒有對__len__()的返回值自定義,則返回輸入參數的長度,否則返回自定義的對象。
3.區別:len()是函數,__len__()是方法,如果沒有對__len__()的返回值自定義,則返回輸入參數的長度。