@property方法使用


Python中訪問對象的屬性可以這么做:實例名.變量名

可以使用@property裝飾器將方法偽裝  成  屬性的樣式使用

@property 下方的函數只能是self參數 ,不能有其他的參數

property 常和私有屬性相結合使用

from math import pi

class Yuan:
    def __init__(self,r):
        self.r = r
    @property
    def ares(self):#只能是self一個參數
        return self.r**2*pi

    def perimeter(self):
        return self.r*2*pi

C1 = Yuan(3)
# print(C1.ares())#沒加@property 用這樣的方式調用,需要添加括號
print(C1.ares)

1.setter  修改

修改@property 下的屬性值  借助  函數名稱.setter 修改

class Persion:
    def __init__(self,name):
        self.__name = name 
    @property
    def name(self):
        return self.__name +'sb'

    @name.setter#傳一個參數
    def name(self,new_name):
        self.__name = new_name

a1 = Persion('jinijin')
print(a1.name)
a1.name = '大家'#修改屬性值,    如果不適用@name.setter 則不能修改
print(a1.name)

 

2.deleter 刪除    通過刪除property屬性來刪除私有屬性

class Persion:
    def __init__(self,name):
        self.__name = name 
    @property
    def name(self):
        return self.__name +'sb'

    @name.setter#傳一個參數
    def name(self,new_name):
        self.__name = new_name
    @name.deleter
    def name(self):
        del self.__name
a1 = Persion('jinijin')
print(a1.name)
a1.name = '大家'#修改屬性值,    如果不適用@name.setter 則不能修改
print(a1.name)
del a1.name
print(a1.name)

 

 已經找不到這個屬性了  刪除okay

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM