python property動態屬性方法記錄。

2021-09-23 01:53:24 字數 1612 閱讀 2388

student.get_age(

)

**如下。

from datetime import date, datetime

class

students

:def

__init__

(self, name, birthday)

: self.name = name

self.birthday = birthday

defget_age

(self)

:"""建立乙個獲取年齡的函式"""

age = datetime.now(

).year - self.birthday

return age

if __name__ ==

"__main__"

: student = students(

'bob'

, date(year=

1990

, month=

12, day=10)

)print

(student.get_age())

"""這裡返回結果29"""

from datetime import date, datetime

class

students

:def

__init__

(self, name, birthday)

: self.name = name

self.birthday = birthday

self._age =

0#def get_age(self):

#"""建立乙個獲取年齡的函式"""

#age = datetime.now().year - self.birthday.year

#return age

@property

defages

(self)

""" 這裡可以存放我們的計算邏輯,從而動態繫結age屬性"""

age = datetime.now(

).year - self.birthday

return age

@ages.setter

defages

(self, value)

: self._age = value

defprints

(self)

:print

(self.ages)

print

(self._age)

if __name__ ==

"__main__"

: student = students(

'bob'

, date(year=

1990

, month=

12, day=10)

) student.prints(

)"""這裡返回結果29,0。因為ages是經過我們的計算邏輯得到的,而self._age則是初始化的值,另外如果在外部對其賦值也是可以改變的,但是self.ages只取決於birthday的值。"""

理解不夠深刻,先記錄一下。

python property 私有屬性

加有 變數名 的私有屬性直接訪問不了,用get.和set.方法,提供個介面進行訪問。property的使用 私有屬性,用來簡化訪問私有屬性,提供開放性介面,共外界訪問 class student def init self,name,age self.name name self.age age d...

Python property裝飾器詳解

屬性的分類 1 例項屬性 最好在 init self,中初始化 內部呼叫時都需要加上self.外部呼叫時用instancename.propertyname 2 類屬性 在 init 外初始化 在內部用classname.類屬性名呼叫 外部既可以用classname.類屬性名又可以用instance...

python property 的詳細使用方法

property 有兩種使用方式裝飾器方式 官方幫助文件 property fget none,fset none,fdel none,doc none property attribute decorators make defining new properties or modifying e...