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

property標簽屬性的基本用法
1、定義一個類,并在其中定義一個方法作為屬性的getter方法。
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
@property
def name(self):
return self._name
2、在類外部訪問屬性時,可以直接通過屬性名進行訪問。
p = Person("張三", 18)
print(p.name) 輸出:張三
3、也可以通過getter方法獲取屬性值。
print(p.name) 輸出:張三
4、如果需要設置屬性值,可以使用setter方法。
p.name = "李四" print(p.name) 輸出:李四
使用@property裝飾器將方法轉(zhuǎn)換為屬性調(diào)用
1、在類中定義一個方法,并在方法前加上@property裝飾器。
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius * 2
2、在類外部訪問屬性時,可以直接通過屬性名進行訪問,此時,該方法已經(jīng)被轉(zhuǎn)換為屬性調(diào)用。
c = Circle(5) print(c.radius) 輸出:20
3、也可以通過getter方法獲取屬性值,此時,該方法已經(jīng)被轉(zhuǎn)換為屬性調(diào)用。
print(c.radius) 輸出:20
4、如果需要設置屬性值,可以使用setter方法,此時,該方法已經(jīng)被轉(zhuǎn)換為屬性調(diào)用。
c.radius = 10 print(c.radius) 輸出:20 (因為半徑已經(jīng)乘以2)
使用@property裝飾器的多個屬性共享同一個getter和setter方法
1、在類中定義一個方法,并在方法前加上@property裝飾器,在該方法中返回另一個方法的結果,這樣,多個屬性就可以共享同一個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、在類外部訪問屬性時,可以直接通過屬性名進行訪問,此時,該屬性會調(diào)用對應的getter方法,如果需要設置屬性值,可以使用setter方法,此時,該屬性會調(diào)用對應的setter方法,注意,當設置面積或周長時,會自動更新半徑。
c = Circle(5) c的面積為78.53981633974483,周長為31.41592653589793 (根據(jù)Python版本和環(huán)境可能會有細微差別) print(c.area) 輸出:78.53981633974483 (根據(jù)Python版本和環(huán)境可能會有細微差別) print(c.circumference) 輸出:31.41592653589793 (根據(jù)Python版本和環(huán)境可能會有細微差別) c.area = 100 c的面積被設置為250 (根據(jù)Python版本和環(huán)境可能會有細微差別),半徑也被自動更新為25 (根據(jù)Python版本和環(huán)境可能會有細微差別) print(c.area) 輸出:250 (根據(jù)Python版本和環(huán)境可能會有細微差別)
當前題目:python的property屬性
當前路徑:http://www.5511xx.com/article/djijjig.html


咨詢
建站咨詢
