Python 物件導向成員

2021-10-04 10:25:46 字數 3509 閱讀 4732

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...