物件導向之類裝飾器

2021-09-26 13:16:43 字數 2457 閱讀 6604

property是一種特殊的屬性,訪問它時會執行一段功能(函式)然後返回值

class

student

:def

__init__

(self,name,birth)

: self.name = name

self.birth = birth

@property

# 將乙個方法偽裝成屬性

defage

(self)

:import time

return time.localtime(

).tm_year - self.birth

alex = student(

'alex'

,1930

)print

(alex.age)

# 名詞

為什麼要用property

將乙個類的函式定義成特性以後,物件再去使用的時候obj.name,根本無法察覺自己的name是執行了乙個函式然後計算出來的,這種特性的使用方式遵循了統一訪問的原則

除此之外,看下

ps:物件導向的封裝有三種方式:

【public】

這種其實就是不封裝,是對外公開的

【protected】

這種封裝方式對外不公開,但對朋友(friend)或者子類(形象的說法是「兒子」,但我不知道為什麼大家 不說「女兒」,就像「parent」本來是「父母」的意思,但中文都是叫「父類」)公開

【private】

這種封裝對誰都不公開

class

circle

:def

__init__

(self,r)

: self.r = r

@property

defarea

(self)

:# 面積更像是圓的屬性

return

3.14

*self.r**

2 @property

defperimeter

(self)

:# 周長更像是圓的屬性

return2*

3.14

*self.r

c = circle(10)

print

(c.area)

print

(c.perimeter)

class

staticmethod_demo()

: role =

'dog'

@staticmethod

deffunc()

:print

("當普通方法用"

)staticmethod_demo.func(

)class

student

:def

__init__

(self,name)

: self.name = name

@staticmethod

# 宣告login方法是乙個靜態方法 ,不必傳任何預設的引數

deflogin

(flag)

:print

('登入程式'

,flag)

username =

input

('>>>'

) stu = student(username)

return stu

# 要想呼叫login 必須現有物件

# 要想建立物件 必須使用者先輸入名字

# 得呼叫登入之後才開始input

# 不必例項化就可以呼叫的login方法 不需要傳遞物件作為引數,就定義這個方法為靜態方法

obj = student.login(flag =

true

)# 用類名可以直接呼叫這個方法了

print

(obj.__dict__)

class

manager

:def

__init__

(self,name)

: self.name = name

@classmethod

# 裝飾當前這個方法為乙個類方法,預設傳引數cls,表示當前所在的類名

deflogin

(cls)

: username =

input

('>>>'

) stu = cls(username)

return stu

obj = manager.login(

)# 用類名可以直接呼叫這個方法了

print

(obj.__dict__)

裝飾器之類裝飾器

外部的方法至今都玩過了,現在來思索一下的方法這麼裝飾 類方法修飾器 類的方法唯一的特殊點在於,self內部是可以呼叫的,但是在外部卻是隱藏的,那這個怎麼搞 為求穩妥,先定參修飾乙個 def godme fun def godme self,message print before fun self,...

物件導向之裝飾器

可以通過 property的getter和setter方法修改物件的屬性值。class person object def init self,name,age self.name name self.age age 訪問器 getter方法 property def name self retur...

物件導向之類和物件

什麼是面向過程與物件導向?面向過程 再說乙個,專案經理與員工 經理要完成乙個專案,就跟員工說 把這個專案做出來。經理要把做專案這件事交個員工來完成,這個員工就是經理面向的物件。員工需要去想怎麼一步步吧專案做出來,這個員工面向的就是過程。總的來說,面向過程與物件導向只是乙個做一件事的思維。去做一件事,...