使用類名.__mro__可以檢視到下乙個呼叫的是哪個父類
import copy
deftest2
(a, b,
*args,
**kwargs)
:print
("-----"
)print
(a)print
(b)print
(args)
print
(kwargs)
deftest1
(a, b,
*args,
**kwargs)
:print
(a)print
(b)print
(args)
print
(kwargs)
test2(a, b,
*args,
**kwargs)
# 相當於(1,2,3,4,5,name="老王")
test1(1,
2,3,
4,5, name=
"老王"
)
class
province
(object):
# 類屬性
country =
'中國'
def__init__
(self, name)
:# 例項屬性
self.name = name
# 建立乙個例項物件
obj = province(
'山東省'
)# 直接訪問例項屬性
print
(obj.name)
# 直接訪問類屬性
print
(province.country)
class
foo(
object):
def__init__
(self, name)
: self.name = name
deford_func
(self)
:# 定義例項方法,至少有乙個self引數
print
(self.name)
@classmethod
defclass_func
(cls)
:# 定義類方法, 至少有乙個cls引數
print
("類方法"
) @staticmethod
defstatic_func()
:# 定義靜態方法, 無缺省引數
print
("靜態方法"
)f = foo(
"中國"
)# 呼叫例項方法
f.ord_func(
)# 呼叫類方法
foo.class_func(
)
為什麼需要靜態方法 : 為了這個方法可以實現一些東西 , 但是不需要傳參, 還需要把這個方法歸為一類
class
foo:
deffunc
(self)
:pass
# 定義property屬性
@property
defprop
(self)
:pass
foo_obj = foo(
)foo_obj.func(
)# 呼叫例項方法
foo_obj.prop # 呼叫property屬性
class
goods
: @property
defsize
(self)
:return
100good = goods(
)ret = good.size
print
(ret)
class
goods
:def
__init__
(self)
: self.original_price =
100 self.discount =
0.8 @property
defprice
(self)
: new_price = self.original_price * self.discount
return new_price
@price.setter
defprice
(self, value)
: self.original_price = value
@price.deleter
defprice
(self)
:del self.original_price
good = goods(
)price = good.price
print
(price)
good.price =
100print
(good.price)
del good.price
print
(good.price)
Python高階 物件導向程式設計
class user object pass按照慣例,類名以大寫字母開頭,緊接著是 object 表示該類是從 object 類進行繼承的。user user 可以在類的建構函式 init 定義類的屬性。class user object def init self,name,age self.na...
高階物件導向
最基本的物件導向寫法 建立建構函式 function aaa 構造方法 aaa.prototype.showname function 使用 建立例項 var a1 new aaa a1.showname 在js原始碼中 系統物件也是基於原型的程式 function array array.prot...
Python系列11 高階物件導向
在python中我們定義類通常是通過class語句來進行定義的。但是python直譯器在執行python類定義的時候,只是掃瞄了一類class語句定義,便呼叫了type python中的類和函式是動態建立的。在使用type 定義類時,括號內要傳入三個引數。class的名稱 繼承的分類結合,主義pyt...