當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python attributes和properties的區別用法及代碼示例


類屬性:類屬性對於每個類都是唯一的。該類的每個實例都將具有此屬性。

例子:

Python3


# declare a class 
class Employee:  
    
    # class attribute 
    count = 0      
        
    # define a method 
    def increase(self):  
        Employee.count += 1
    
# create an Employee  
# class object 
a1 = Employee()  
  
# calling object's method 
a1.increase()  
  
# print value of class attribute 
print(a1.count)  
     
a2 = Employee()  
  
a2.increase()  
  
print(a2.count)  
    
print(Employee.count)

輸出:

1
2
2

在上麵的例子中,count變量是一個類屬性。

實例屬性:實例屬性對於每個實例都是唯一的(實例是對象的另一個名稱)。每個對象/實例都有自己的屬性,並且可以在不影響其他實例的情況下進行更改。

例子:

Python3


# create a class 
class Employee:  
    
    # constructor 
    def __init__(self):  
        
        # instance attribute 
        self.name = 'Gfg'
        self.salary = 4000
    
    # define a method 
    def show(self):  
        print(self.name)  
        print(self.salary)  
  
# create an object of  
# Employee class 
x = Employee() 
  
# method calling 
x.show()

輸出:

Gfg
4000

現在,讓我們看一個有關屬性的示例:

1)使用property()函數創建類的屬性:

用法: property(fget, fset, fdel, doc)

例子:

Python3


# create a class 
class gfg:  
    
    # constructor 
    def __init__(self, value):  
        self._value = value  
            
    # getting the values  
    def getter(self):  
        print('Getting value')  
        return self._value  
            
    # setting the values  
    def setter(self, value):  
        print('Setting value to ' + value)  
        self._value = value  
            
    # deleting the values  
    def deleter(self):  
        print('Deleting value')  
        del self._value  
      
    # create a properties 
    value = property(getter, setter, deleter, )  
    
# create a gfg class object 
x = gfg('Happy Coding!')  
print(x.value)  
    
x.value = 'Hey Coder!'
    
# deleting the value 
del x.value

輸出:

Getting value
Happy Coding!
Setting value to Hey Coder!
Deleting value

2)使用@property裝飾器創建類的屬性:

我們可以使用@property裝飾器來應用屬性函數。這是內置裝飾器之一。裝飾器隻是一個函數,它接受另一個函數作為參數,並通過包裝它來添加它的行為。

例子:

Python3


# create a class 
class byDeco:  
    
   # constructor 
    def __init__(self, value):  
        self._value = value  
            
    # getting the values 
    @property              
    def value(self):  
        print('Getting value')  
        return self._value  
            
    # setting the values      
    @value.setter  
    def value(self, value):  
        print('Setting value to ' + value)  
        self._value = value  
            
    # deleting the values  
    @value.deleter  
    def value(self):  
        print('Deleting value')  
        del self._value  
    
    
# create an object of class 
x = byDeco('happy Coding')  
print(x.value)  
    
x.value = 'Hey Coder!'
    
# deleting the value 
del x.value

輸出:

Getting value
happy Coding
Setting value to Hey Coder!
Deleting value

屬性與屬性之間的差異表

Attribute

Property

屬性由數據變量說明,例如姓名、年齡、身高等。 屬性是特殊類型的屬性。

兩種類型的屬性:

  • 類屬性
  • 實例屬性
它有 getter、setter 和 delete 方法,如 __get__、__set__ 和 __delete__ 方法。
Class attributes 通常在類主體部分中定義在頂部。 我們可以使用以下方法定義 getter、setter 和 delete 方法property() 函數。
I實例屬性在類主體中定義使用self關鍵字通常是__init__()方法。 如果我們隻想讀取屬性,還有一個 @property 裝飾器,您可以將其添加到方法上方。


相關用法


注:本文由純淨天空篩選整理自mayanktyagi1709大神的英文原創作品 Difference between attributes and properties in Python。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。