class Employee:
pay_raise_percent = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
p1 = Employee('John', 50_000)
p2 = Employee('Alex', 75_000)
p3 = Employee('Caleb', 90_000)
Employee.pay_raise_percent = 1.04
print(p1.salary, p2.salary, p3.salary, sep='\n')
# 52000 78000 93600
是否有可能改變一個類屬性導致所有實體的工資自動增加這個值,而無需為每個實體明確這樣做?
uj5u.com熱心網友回復:
聽起來是一個很好的屬性用例。屬性看起來像普通的實體變數,但行為像方法。考慮
class Employee:
pay_raise_percent = 1.00
def __init__(self, name, salary):
self.name = name
self._salary = salary # "Private" variable
@property
def salary(self):
return self._salary * Employee.pay_raise_percent
p1 = Employee('John', 50_000)
print(p1.salary) # 50000
Employee.pay_raise_percent = 1.04
print(p1.salary) # 52000
實際上,每次訪問p1.salary都會呼叫一個對實際欄位進行一些數學運算的方法p1._salary,因此Employee.pay_raise_percent每當請求薪水時都會看到對 的任何更新。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/329042.html
下一篇:QML影像不拉伸/適合SVG
