新聞中心
Python中的property標(biāo)簽屬性是一種特殊的裝飾器,它可以將一個(gè)方法轉(zhuǎn)換為屬性調(diào)用,這樣可以在不改變類的接口的情況下,增加或修改類的方法,property標(biāo)簽屬性的主要作用是實(shí)現(xiàn)數(shù)據(jù)的封裝和隱藏,提高代碼的可讀性和可維護(hù)性。

property標(biāo)簽屬性的基本用法
1、定義一個(gè)類,并在其中定義一個(gè)方法作為屬性的getter方法。
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
@property
def name(self):
return self._name
2、在類外部訪問屬性時(shí),可以直接通過屬性名進(jìn)行訪問。
p = Person("張三", 18)
print(p.name) 輸出:張三
3、也可以通過getter方法獲取屬性值。
print(p.name) 輸出:張三
4、如果需要設(shè)置屬性值,可以使用setter方法。
p.name = "李四" print(p.name) 輸出:李四
使用@property裝飾器將方法轉(zhuǎn)換為屬性調(diào)用
1、在類中定義一個(gè)方法,并在方法前加上@property裝飾器。
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius * 2
2、在類外部訪問屬性時(shí),可以直接通過屬性名進(jìn)行訪問,此時(shí),該方法已經(jīng)被轉(zhuǎn)換為屬性調(diào)用。
c = Circle(5) print(c.radius) 輸出:20
3、也可以通過getter方法獲取屬性值,此時(shí),該方法已經(jīng)被轉(zhuǎn)換為屬性調(diào)用。
print(c.radius) 輸出:20
4、如果需要設(shè)置屬性值,可以使用setter方法,此時(shí),該方法已經(jīng)被轉(zhuǎn)換為屬性調(diào)用。
c.radius = 10 print(c.radius) 輸出:20 (因?yàn)榘霃揭呀?jīng)乘以2)
使用@property裝飾器的多個(gè)屬性共享同一個(gè)getter和setter方法
1、在類中定義一個(gè)方法,并在方法前加上@property裝飾器,在該方法中返回另一個(gè)方法的結(jié)果,這樣,多個(gè)屬性就可以共享同一個(gè)getter和setter方法。
class Circle:
def __init__(self, radius):
self._radius = radius
self._area = None
self._circumference = None
self.update() 初始化面積和周長為None,然后調(diào)用update方法更新它們
def update(self):
import math as mtm
self._area = mtm.pi * self._radius * self._radius
self._circumference = mtm.pi * self._radius * 2
2、在類外部訪問屬性時(shí),可以直接通過屬性名進(jìn)行訪問,此時(shí),該屬性會(huì)調(diào)用對應(yīng)的getter方法,如果需要設(shè)置屬性值,可以使用setter方法,此時(shí),該屬性會(huì)調(diào)用對應(yīng)的setter方法,注意,當(dāng)設(shè)置面積或周長時(shí),會(huì)自動(dòng)更新半徑。
c = Circle(5) c的面積為78.53981633974483,周長為31.41592653589793 (根據(jù)Python版本和環(huán)境可能會(huì)有細(xì)微差別) print(c.area) 輸出:78.53981633974483 (根據(jù)Python版本和環(huán)境可能會(huì)有細(xì)微差別) print(c.circumference) 輸出:31.41592653589793 (根據(jù)Python版本和環(huán)境可能會(huì)有細(xì)微差別) c.area = 100 c的面積被設(shè)置為250 (根據(jù)Python版本和環(huán)境可能會(huì)有細(xì)微差別),半徑也被自動(dòng)更新為25 (根據(jù)Python版本和環(huán)境可能會(huì)有細(xì)微差別) print(c.area) 輸出:250 (根據(jù)Python版本和環(huán)境可能會(huì)有細(xì)微差別)
新聞名稱:python的property屬性
文章來源:http://www.dlmjj.cn/article/djijjig.html


咨詢
建站咨詢
