類屬性:類屬性對於每個類都是唯一的。該類的每個實例都將具有此屬性。
例子:
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 裝飾器,您可以將其添加到方法上方。 |
相關用法
- Python attr.asdict()用法及代碼示例
- Python abs()用法及代碼示例
- Python any()用法及代碼示例
- Python all()用法及代碼示例
- Python ascii()用法及代碼示例
- Python append() and extend()用法及代碼示例
- Python argparse.ArgumentParser.add_subparsers用法及代碼示例
- Python argparse.ArgumentParser.add_argument_group用法及代碼示例
- Python argparse.ArgumentParser.add_mutually_exclusive_group用法及代碼示例
- Python argparse.ArgumentParser.set_defaults用法及代碼示例
- Python argparse.ArgumentParser.get_default用法及代碼示例
- Python argparse.ArgumentParser.convert_arg_line_to_args用法及代碼示例
- Python argparse.ArgumentParser.exit用法及代碼示例
- Python argparse.FileType用法及代碼示例
- Python ast.AST用法及代碼示例
- Python ast.Constant用法及代碼示例
- Python ast.JoinedStr用法及代碼示例
- Python ast.List用法及代碼示例
- Python ast.Set用法及代碼示例
- Python ast.Dict用法及代碼示例
- Python ast.Load用法及代碼示例
- Python ast.Starred用法及代碼示例
- Python ast.Expr用法及代碼示例
- Python ast.BinOp用法及代碼示例
- Python ast.BoolOp用法及代碼示例
注:本文由純淨天空篩選整理自mayanktyagi1709大神的英文原創作品 Difference between attributes and properties in Python。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。