python 物件導向成員
所有物件導向成員(6個)
變數(2)
例項變數
類變數方法(3)
例項方法
類方法靜態方法
屬性(1)屬性
變數(類中的函式)
例項變數(字段), 寫在__init__中的變數,例項化乙個物件時就設定的變數
#應用場景:當類中多個方法使用共同的某個值時,這時可以將該值封裝成例項變數,方便呼叫
class
person
:def
__init__
(self,name=
'小明'):
#定義構造方法
self.name=name #定義例項變數(字段)
people1=person(
)print
(people1.name)
#只有例項化後才能呼叫,或者person().name,效果一樣
類變數(靜態字段)
# 應用場景:當所有物件中有共同的字段時,且如果修改都要修改,可以將例項變數(字段)提取到類變數(靜態欄位中)
class
person
: age=
12#定義乙個類變數
def__init__
(self,name=
'小明'):
self.name=name
people1=person(
)print
(people1.age)
#可以通過變數名呼叫
print
(person.age)
#也可以通過類名呼叫
people1.age=
22#此種修改只是修改當前物件的age值,不影響其他例項化物件
person.age=
33#此種修改會修改類中age值,之後例項化的物件age值為33
方法
例項方法, 格式:def 方法名(self),引數中帶有self,意為只有通過物件才可呼叫的方法
#應用場景: 在方法中需要用到__init__中的封裝的值時用例項方法比較簡單
class
classname
:def
main
(self)
:#引數中帶有self,這就是乙個例項方法
print
('hello world'
)demo=classname(
)demo.main(
)#呼叫時只能使用物件名.例項化方法名()呼叫
靜態方法,格式:在方法上加@staticmethod定義乙個靜態方法
#應用場景:方法中如果用不到構造方法封裝的值,這時最好定義靜態方法
class
classname
: @staticmethod
#在方法前加上,說明定義乙個靜態方法
defmain
(massage=
'hello world'):
#可以傳參,但是不能傳self
print
(massage)
deffun
(self)
: classname.main(
)#類內部呼叫只能用 類名.靜態方法名() 呼叫
demo=classname(
)demo.main(
)#可以通過 物件名.靜態方法名() 呼叫
classname.main(
)#可以通過 類名.靜態方法名() 呼叫
類方法,格式:@classmethod def 函式名(cls,)至少乙個引數cls
#應用場景:如果在方法中會使用當前類(在方法中例項化該類並呼叫),就可以使用該方法
# 類方法其實是靜態方法的乙個特殊用法
class
person
:def
__init__
(self,name=
'小明'):
self.name=name
@classmethod
#在方法前加上,表示這是乙個類方法
defmain
(cls)
:#必須有乙個cls引數,此引數python會自動傳入當前類
people1=cls(
)#可以通過cls例項化乙個物件,並使用類中的成員
print
('hello %s'
%people1.name)
demo=person(
)demo.main(
)#類方法可以通過 物件名.類方法名() 呼叫
person.main(
)#類方法也可以通過 類名.類方法名() 呼叫
屬性
屬性, 在方法前加上 @property,如下:
# 應用場景:一般用於簡單的方法,當無須傳參,且有返回值時
class
classname
:def
__init__
(self)
:pass
@property
#加在方法前嗎,表示這是乙個屬性
defmain
(self)
:#引數有且只能有乙個引數self
print
('hello python'
)demo=classname(
)demo.main#呼叫時至只需要使用物件面名.引數名即可
類中公有和私有成員的區別
私用成員就是在成員前加上__,格式為__成員名
私用成員不可被繼承
私有成員可以在外部用特殊方法呼叫和檢視,但是不能進行修改.方法為:物件名._類名__成員
#應用場景: 不希望類中的成員在類的外部被使用
class
person
: __age=
12#私有類變數(靜態字段)
def__init__
(self,name=
'小明'):
self.__name=name# 私有例項變數(字段)
def__fun
(self)
:#私有類方法
print
(person.__age)
deffun
(self)
: self.__fun(
)people1=person(
)print
(people1.__name)
#不可被呼叫,報錯
print
(person.__age)
#不可被呼叫,報錯
people1.__fun(
)#不可被呼叫,報錯
people1.fun(
)#被呼叫,輸出12
people1._person__fun(
)#使用特殊方法,依然能夠被呼叫,輸出12,但是這種方法少用
Python物件導向之物件成員
任務 請修改右側 begin end 之間的 使其可以正常執行。該 的目的是求輸入資料的階乘。請在下面的begin end之間按照注釋中給出的提示編寫正確的 begin class factorial def init self,num self.num num defget value self ...
Python物件導向特殊成員
類的特殊成員之call usr bin env python coding utf 8 class specialmembers 類的構造方法 def init self print my blog is url 物件的構造方法 def call self print my name is yang...
物件導向 成員變數
變數可以分為三大類 成員變數 區域性變數和全域性變數。成員變數指的是在類介面部分或類實現部分定義的變數。objective c的成員變數都是例項變數,objective c並不支援真正的類變數。只要例項存在,程式就可以訪問該例項的例項變數,在程式中訪問例項變數使用如下語法 例項 例項變數雖然obje...