方法property等
字段分為兩種:普通字段和靜態字段
普通字段,又叫例項屬性,在物件導向中屬於物件,在物件被建立時產生。也就是說,普通字段只能通過物件來訪問,不可通過類訪問
——**如下:
class
ziduan()
:#普通字段(例項屬性)
def__init__
(self)
:#通過物件建立普通字段
self.common_fields=
'我是普通字段'
#例項化
z=ziduan(
)print
(z.common_fields)
其中,因為普通字段屬於物件,所以在建立不同物件時,會自動建立不同的普通字段儲存在記憶體中。如果這些物件的該字段都彼此相同,此時建立普通欄位就會佔據不必要的記憶體。
靜態字段,屬於類,儲存在類中,可以通過物件或者通過類來訪問。
——**如下:
class
ziduan()
:#靜態字段
#直接在類裡面建立
stastic_fields=
'我是靜態字段'
#例項化
z=ziduan(
)print
(z.stastic_fields)
#通過物件訪問
print
(ziduan.stastic_fields)
#通過類訪問
靜態字段屬於類,建立物件時不會建立新的物件。
普通方法又叫例項方法,儲存在類中,通過物件或類呼叫。
——**如下:
class
method()
:#普通方法
defcm
(self)
:print
('我是普通方法'
)#例項化
m=method(
)m.cm(
)#通過物件訪問
method.cm(m)
#通過類呼叫
注意:普通方法儲存在類中,在建立物件時不會自動建立新的方法。
普通方法第乙個引數必須是該例項物件(預設self)
普通方法可以訪問類中的所有成員。
通過裝飾器@stasticmethod建立,儲存在類中,可以通過類、物件呼叫。
——**如下:
class
method()
:#靜態方法
@staticmethod
defstm()
:print
('我是靜態方法'
)#例項化
m=method(
)m.stm(
)#通過物件呼叫
method.stm(
)#通過類呼叫
靜態方法只能訪問類中的靜態成員,不能在繼承中修改。
通過裝飾器@classmethod建立,儲存在類中,通過類、物件呼叫。
——**如下:
class
method()
:#類方法
@classmethod
defcm1
(cls)
:print
('我是類方法'
)#例項化
m=method(
)m.cm1(
)#通過物件呼叫
method.cm1(
)#通過類呼叫
第乙個引數必須是類本身(預設cls)
其中cls代表類本身,類似於普通方法中的self。
用於以屬性的方式呼叫方法
(1)建立方法,只能訪問,不能賦值傳參。
——**如下:
class
method()
: @property
defcm1
(self)
:print
('property'
)m=method(
)m.cm1#訪問property
(2)property繫結,實現刪改查功能
——**示例如下:
class
method()
:def
__init__
(self)
: self.p=
0def
get_p
(self)
:print
(self.p)
defdelete_p
(self)
:del self.p
defset_p
(self,new)
: self.p=new
prop=
property
(fget=get_p,fdel=delete_p,fset=set_p)
#**m=method(
)m.prop#查,呼叫get_p()
m.prop=1#改
del m.prop#刪
用於通過屬性呼叫方法,傳參賦值
——**如下:
class
method()
: @property
#先通過property建立
deftest
(self)
:print
('property'
) @test.setter
deftest
(self, name)
: self.name = name
print
(self.name)
m=method(
)m.test=
20#賦值,呼叫@test.setter
用於通過屬性進行刪除
——測試**如下:
class
method()
: @property
#先通過property建立
deftest
(self)
:print
('property'
) @test.setter
deftest
(self, name)
: self.name = name
print
(self.name)
@test.deleter
deftest
(self)
:print
(self.name)
del self.name
try:print
(self.name)
except attributeerror:
print
('deleted'
)m=method(
)m.test=
20#賦值,觸發@test.setter
del m.test#del關鍵字觸發@test.deleter
C 小白 物件導向1
在c 中,類 class 是對c中的結構體struct的增強,也是用於自定義型別的。includeusing namespace std class object int main 訪問修飾符 public 公開的,可以被外部訪問 private 私有的,不可以被外部與訪問 protected 一般...
C 小白 物件導向2
include using namespace std class object int main 輸出結果為 include using namespace std int x 1 定義全域性變數x class object int main 3.當全域性函式與成員函式相同時,使用成員函式 inc...
C 小白 物件導向3
建構函式是類的一種特殊的函式 1 函式名與類名相同 2 沒有返回值 3 可以有形參也可以沒有 4 可以時內聯函式 5 可以過載 6 可以帶預設引數 作用 在物件被建立時使用特殊的值構造物件,將物件初始化為乙個特殊的狀態。建構函式一般不顯示呼叫,在建立乙個物件時,建構函式被自動呼叫。用編譯器完成 若程...