Day 8定義自己的資料型別

2022-07-18 14:24:33 字數 1847 閱讀 6667

基於繼承的方式定義自己的列表型別:

class

lxy(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])

print

(l)print

(l)l.insert(0,21341)

print(l)

作業:基於授權定製自己的列表型別,要求定製的自己的__init__方法

class

list():

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...