1. <source id="nejs2"></source>
  2. <video id="nejs2"></video>
    <source id="nejs2"></source>
          1. 首頁 > Python 教程 > Python 面向對象 > Python 屬性裝飾器——@property

            Python 屬性裝飾器——@property

            更新:

            @property裝飾器是 Python 中用于屬性()函數的內置裝飾器。 在類中的任何方法上使用@property裝飾器,將該方法用作屬性。

            您可以使用以下三個裝飾器來定義屬性:

            • @property:將方法聲明為屬性。
            • @ 。setter:為將值設置為屬性的屬性指定 setter 方法。
            • @ 。deleter:將 delete 方法指定為刪除屬性的屬性。

            申報財產

            下面將方法聲明為屬性。此方法必須返回屬性值。

            Example: @property decorator

            class Student:
            
                def __init__(self, name):
                    self.__name = name
            
                @property
                def name(self):
                    return self.__name 

            上圖,@property裝飾器應用于name()方法。 name()方法返回私有實例屬性值__name。 因此,我們現在可以使用name()方法作為屬性來獲取__name屬性的值,如下所示。

            Example: Access Property decorator

            >>> s = Student('Steve')
            >>> s.name 
            'Steve' 

            屬性設置器

            上面,我們將name()方法定義為一個屬性。我們只能訪問name屬性的值,但不能修改它。 要修改屬性值,我們必須使用@property-name.setter裝飾器為name屬性定義 setter 方法,如下所示。

            Example: Property Setter

            class Student:
            
                def __init__(self, name):
                    self.__name=name
            
                @property
                def name(self):
                    return self.__name
            
                @name.setter   #property-name.setter decorator
                def name(self, value):
                    self.__name = value 

            上面,我們有兩個name()方法的重載。一個是 getter 方法,另一個是 setter 方法。 setter 方法必須具有可用于分配給基礎私有屬性的值參數。 現在,我們可以檢索和修改屬性值,如下所示。

            Example: Access Property

            >>> s = Student('Steve')
            >>> s.name 
            'Steve'
            >>> s.name = 'Bill'
            'Bill' 

            屬性刪除

            使用@property-name.deleter裝飾器定義刪除屬性的方法,如下所示。

            Example: Property Deleter

            class Student:
                def __init__(self, name):
                    self.__name = name
            
                @property
                def name(self):
                    return self.__name
            
                @name.setter
                def name(self, value):
                    self.__name=value
            
                @name.deleter   #property-name.deleter decorator
                def name(self, value):
                    print('Deleting..')
                    del self.__name 

            當您使用關鍵字del刪除屬性時,將調用刪除程序,如下所示。一旦刪除屬性,就不能使用同一實例再次訪問它。

            Example: Delete a Property

            >>> s = Student('Steve')
            >>> del s.name 
            Deleting.. 
            >>> s.name 
            Traceback (most recent call last):                              
            File "<pyshell#16>", line 1, in <module>            
                p.name                                                      
            File "C:\Python37\test.py", line 6, in name                     
                return self.__name                                          
            AttributeError: 'Student' object has no attribute '_Student__name' 
            頂部 久久久久99精品成人片毛片_黃色A片三級三級三級无码_日本不卡高清视频v中文字幕_高清欧美视频一区二区
            1. <source id="nejs2"></source>
            2. <video id="nejs2"></video>
              <source id="nejs2"></source>