基於繼承的方式定義自己的列表型別:
classlxy(list):
def
#print("-->",p_object)
ifnot
isinstance(p_object,int):
raise typeerror("
must be int")
definsert(self, index:int, p_object:int):
#if not isinstance(index,int):
#raise typeerror("must be int")
#if not isinstance(p_object,int):
#raise typeerror("must be int")
super().insert(index,p_object)
l=lxy([1,2,3])
(l)print
(l)l.insert(0,21341)
print(l)
作業:基於授權定製自己的列表型別,要求定製的自己的__init__方法
classlist():
def__init__(self,*args):
self.
__l=list([*args])#
真正的列表
def
ifnot
isinstance(value,str):
raise typeerror("
must be str")
else
: self.
__l
def__getattr__(self, item):#
屬性不存在的情況下會觸發
return getattr(self.__l,item)#
反射:列表.使用方法並執行
@property#
取中間值這個功能偽裝成乙個變數
defcentervalue(self):
if self.__l
:
return self.__l[divmod(len(self.__l),2)[0]]#
列表長度用divmod內建函式(獲得乙個元組)除以2取整
else
:
raise indexerror("
centervalue from empty list")
a=list(1,2,3)
print(a)#
<__main__.list object at 0x000000ec7bfdadd8>
lxy"
)print(a.__dict__)#
print(a._list__l)#
[1, 2, 3, 'lxy']
#a.pop(2)
print(a._list__l)#
[1, 2, 'lxy']
a.insert(1,4)
print(a._list__l)#
[1, 4, 2, 'lxy']
print(a.centervalue)#2#
b=list()#定義乙個空列表
#print(b.centervalue)#丟擲異常
在類最後新增如下**,真正實現列表的列印:
def__str__(self): #
不寫這個,列印a就是乙個記憶體位址
return str(self.__l
)print(a)#
[1, 2, 3]
python學習(day8)基本資料型別總結與擴充套件
一 數字 int 二 字串 replace find join strip startswith split upper lower format 三 列表 索引 切片 迴圈 四 元組 忽略 索引 切片 迴圈 特性 一級元素不可修改 五 字典 get update keys values items...
Day8 類的繼承
觀察兩個類的成員組成 提取相同的屬性和方法 寵物是父類,狗和金魚是子類。子類具有父類的屬性和方法。是使用已存在的類作為基礎建立新類的技術。單一繼承 只有乙個父類。父類可以叫做基類 超類。子類可以叫做派生類。子類可以繼承父類中的成員 屬性和方法 但是需要注意 1.private的成員不能繼承 2.子類...
獻給小白的筆記day8
繼承的格式 修飾符 class 父類名 修飾符 class 子類名 extends 父類名 繼承的注意事項 equals方法 只能比較引用資料型別 equals方法在沒有被重寫方法時,只能比較引用資料型別,比較的是位址值 該類重寫了object類的equals方法,按照重寫的規則進行比較 tostr...