繼承是物件的特性之一
子類會覆蓋父類的相同方法,如何使用父類相同的方法
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...