以下類定義中哪些是類屬性,哪些是例項屬性?
classc:
num =
0def
__init__
(self)
: self.x =
4#例項屬性
self.y =
5#例項屬性
c.count =
6#類屬性
怎麼定義私有法:在 python 中定義私有變數只需要在變數名或函式名前加上「__」兩個下劃線,那麼這個函式或變數就會為私有的了。
嘗試執行以下**,並解釋錯誤原因:對c
的定義以及呼叫myfun()
函式應該在class c
結構體的外面,縮排有錯誤,在結構體內並沒有定義c
。
classc:
defmyfun()
:print
('hello!'
) c = c(
) c.myfun(
)
按照以下要求定義乙個遊樂園門票的類,並嘗試計算2個**+1個小孩平日票價
要求:• 平日票價100元
• 週末票價為平日的120%
• 兒童票半價
class
ticket()
:def
fee(self,day,old)
: fee=
100if old==
'child'
: fee = fee/
2if day==
'weekend'
: fee =
1.2*fee
return fee
ticket = ticket(
)print
('%f'%(
2*ticket.fee(
'weekday'
,'adult'
)+ticket.fee(
'weekday'
,'child'))
)
上面提到了許多魔法方法,如__new__,__init__,
__str__,__rstr__,__getitem__,__setitem__
等等,請總結它們各自的使用方法。
•__init__(self[, ...])
構造器,當乙個例項被建立的時候呼叫的初始化方法
• 在乙個物件例項化的時候所呼叫的第乙個方法,在呼叫__init__
初始化前,先呼叫__new__
。__new__
至少要有乙個引數cls,代表要例項化的類,此引數在例項化時由 python 直譯器自動提供,後面的引數直接傳遞給__init__
。__new__
對當前類進行了例項化,並將例項返回,傳給__init__
的self
。但是,執行了__new__
,並不一定會進入__init__
,只有__new__
返回了,當前類cls的例項,當前類的__init__
才會進入。
•__str__(self)
: 當你列印乙個物件的時候,觸發__str__
當你使用%s格式化的時候,觸發__str__
str強轉資料型別的時候,觸發__str__
•__repr__(self)
: repr是str的備胎 有__str__
的時候執行__str__,
沒有實現__str__
的時候,執行__repr__
repr(obj)內建函式對應的結果是__repr__
的返回值 當你使用%r格式化的時候 觸發__repr__
• 如果說你希望定製的容器是不可變的話,你只需要定義__len__()
和__getitem__()
方法。 如果你希望定製的容器是可變的話,除了__len__()
和__getitem__()
方法,你還需要定義__setitem__()
和__delitem__()
兩個方法。
利用python做乙個簡單的定時器類
要求:• 定製乙個計時器的類。
• start和stop方法代表啟動計時和停止計時。
• 假設計時器物件t1,print(t1)和直接呼叫t1均顯示結果。
• 當計時器未啟動或已經停止計時時,呼叫stop方法會給予溫馨的提示。
• 兩個計時器物件可以進行相加:t1+t2。
• 只能使用提供的有限資源完成。
import time
class
mytime
(object):
def__init__
(self)
: self.__info =
'未開始計時!'
self.__begin =
none
self.__end =
none
self.__jg =
0def
__str__
(self)
:return self.__info
def__repr__
(self)
:return self.__info
defstart
(self)
:print
('計時開始...'
) self.__begin = time.localtime(
)def
stop
(self):if
not self.__begin:
print()
return
self.__end = time.localtime(
) self.__jg = time.mktime(self.__end)
- time.mktime(self.__begin)
self.__info =
'共執行了%d秒'
% self.__jg
print
('計時結束!'
)return self.__jg
def__add__
(self, other)
:return
'共執行了%d秒'
%(other.__jg + self.__jg)
動手學深度學習 Task07筆記彙總
演算法細節不是很感興趣,就看了看軌跡理解了一下 1.指數加權移動平均ema 2.adagrad 給各維度各自的學習率 沒用到ema 出現梯度消失的原因是自適應學習率分母的不斷累加使其存在最終趨於0的可能 3.rmsprop 利用ema解決了adagrad梯度消失的問題 4.adadelta 基於rm...
Task07 類 物件與魔法方法
物件 屬性 方法 物件是類的例項。換句話說,類主要定義物件的結構,然後我們以類為模板建立物件。類不但包含方法定義,而且還包含所有例項共享的資料。1.封裝 資訊隱蔽技術 我們可以使用關鍵字class定義python類,關鍵字後面緊跟類的名稱 分號和類的實現 2.繼承 子類自動共享父類之間資料和方法的機...
task07 類與物件 魔方方法
1 以下類定義中哪些是類屬性,哪些是例項屬性?類屬性 類裡面方法外面定義的變數稱為類屬性。類屬性所屬於類物件並且多個例項物件之間共享同乙個類屬性,說白了就是類屬性所有的通過該類例項化的物件都能共享。例項屬性 例項屬性和具體的某個例項物件有關係,並且乙個例項物件和另外乙個例項物件是不共享屬性的,說白了...