亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

章節
問答
課簽
筆記
評論
占位
占位

Python類的__len__方法

對于列表List或者元組Tuple,通過內建方法len(),可以得出列表或者元組中元素的個數。如果一個類表現得像一個list,想使用len()函數來獲取元素個數時,則需要實現__len__()方法。
比如我們實現一個班級Class的類,初始化把班級的同學名字列表傳進去,希望len()函數可以返回班級同學的數量時,可以這樣實現。

class Class:
    def __init__(self, students):
        self.students = students
    def __len__(self):
        return len(self.students)

students = ['Alice', 'Bob', 'Candy']
class_ = Class(students)
len(class_) # ==> 3

通過自定義__len__()方法,可以讓len()函數返回相關的結果,如果沒有定義__len__()方法的類使用len()函數獲取長度時,將會引起異常。

class Class:
    def __init__(self, students):
        self.students = students

class_ = Class(students)
len(class_)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'Class' has no len()

任務

斐波那契數列是由 0, 1, 1, 2, 3, 5, 8...構成。

請編寫一個Fib類,Fib(10)表示數列的前10個元素,print Fib(10) 可以打印出數列的前 10 個元素,len(Fib(10))可以正確返回數列的個數10。

?不會了怎么辦

參考答案:

class Fib(object):
    def __init__(self, num):
        self.res = []
        self.num = num
        a = 0
        b = 1
        for x in range(num):
            self.res.append(a)
            a, b = b, a + b

    def __str__(self):
        return str(self.res)

    def __len__(self):
        return self.num

f = Fib(10)
print(f)
print(len(f))
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務號

綁定后可得到

  • · 粉絲專屬優惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復提醒
  • · 賬號支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請您關注公眾號
關注后,及時獲悉本課程動態

舉報

0/150
提交
取消
全部 精華 我要發布
全部 我要發布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?