物件導向程式設計(class) 2

2021-10-14 11:25:15 字數 2231 閱讀 3650

繼承是物件的特性之一

子類會覆蓋父類的相同方法,如何使用父類相同的方法

classp:

def__init__

(self,name)

: self.name=name

class

c(p)

:def

__init__

(self,name,age)

: self.age=age

#呼叫父類相同的方法

#super().__init__(name) #單繼承

p.__init__(self,name)

練習1

請編寫「物理學家」的類,並將其作為「理論物理學家」和「實驗物理學家」兩個類的父類

引數的型別是不唯一的

def

add(a,b)

return a+b #a和b可以是整數也可以是字串

在變數前加上__ 表示在只能在這個域中可以使用

class

roundfloat

:def

__init__

(self,val)

: self.value=

round

(val,2)

def__str__

(self)

:# str:對使用者友好(print(r)) repr:直譯器友好(r)

return"".

format

(self.value)

__repr__=__str__

r=roundfloat(

3.1415926

)print

(r)print

(type

(r))

class

bar:

__slots__=

#無論實列還是類只能有這兩種屬性且值不能改變

classa:

#當訪問的屬性不存在是會訪問__getattr__

def__getattr__

(self,name)

:print

("you user getattr"

)def

__setattr__

(self,name,value)

:print

("you user setattr"

) self.__dict__[name]

=value

lst=[1

,2,3

,4]hasattr

(lst,

'__iter__'

)#返回值為true則該型別可迭代

iter_lst=

iter

(lst)

#生成迭代器

hasattr

(iter_lst,

'__iter__'

)#可迭代

hasattr

(iter_lst,

'__next__'

)#迭代器的標誌

iter_lst.__next__(

)#讀出迭代器中的內容

def

y_yield

(n):

print

("start "

)while n>0:

print

("before yield"

)yield n #執行到這是將會掛起

n-=1print

("after yield"

)yy=y_yield(3)

yy.__next__(

)#輸出結果

#start

#before yield

#3yy.__next__(

)#程式接著執行

#after yield

#before yield

#2gt=

(i**

2for i in

range(10

))#產生生成器

import itertools

print

(list

(itertools.islice(gt,3)

))#讀取資料

學習於python入門到實戰星選卡

物件導向程式設計 類 class 2

公共成員 可以在類的外部訪問到。我們之前接觸到的都是公共成員 私有成員 只能在該類的內部才能直接訪問到的 子類也不能直接訪問 在外部,可以通過間接方法才能取得。以欄位 普通欄位和靜態字段相同 為例,開頭加 雙下劃線 使欄位變為私有字段 方法也一樣,方法名前面加 雙下劃線 即可。class db de...

class2 跨庫注入

如果要應用跨庫注入,有乙個條件,那就是當前資料庫使用者必須為root使用者,才可以對整個資料庫進行操作 確定使用者 user 確定使用者 如果回顯為root localhost或者root 127.0.0.1只要 號前面為root,則代表該資料庫使用者為root 跨庫注入過程 第一步 獲取當前所有的...

物件導向 class

class主要是避免 import導致死迴圈的問題 由於 class僅僅是告訴編譯器後面的名稱是乙個類,所以編譯器並不知道這個類中有哪些屬性和方法,所以在.m中使用這個類時需要import這個類,才能使用 class僅僅是告訴編譯器,class後面的名稱是乙個類,不會做任何的拷貝 具體使用 有乙個p...