在Python中的快速問題 假設我的類是這樣的
class Enemy()。
def __init__(self, level):
self.level = level
self.damage = self.level 5。
問題是,由于self.damage的值被實體化了一次,所以當self.level改變時,它不會更新,我怎樣才能讓它做到這一點?我試著在網上搜索,但我不知道這叫什么,所以我找不到任何幫助
uj5u.com熱心網友回復:你可以使用properties。也許你從其他編程語言中知道getter和setter方法。屬性就是它們的等價物。在這種情況下,你只需要一個 getter 方法。
class Enemy() 。
def __init__(self, level):
self.level = level
@property: self.level = level。
def damage(self)。
return self.level 5.
美中不足的是,你仍然可以像enemy.damage那樣作為你的實體的一個屬性來訪問damage,而不必明確地呼叫這個方法,它是自動完成的。
uj5u.com熱心網友回復:
除了使用屬性之外,你還可以把傷害變成一個函式而不是一個變數:
def damage()。
return self.level 5.
uj5u.com熱心網友回復:
這是一篇關于屬性的好文章:
https://www.freecodecamp.org/news/python-property-decorator/
它們允許您控制屬性的訪問方式,這使得將來在您決定需要改變時更容易更新它們。例如,您可以改變數值或使其成為變數,而呼叫該屬性的任何東西都不會受到影響,而不是統一的 5。
如果你想的話,你可以通過使用@damage.setter來添加一種手動設定傷害的方法。
class Enemy()。
''這持有敵人的資料和功能''。
def __init__(self, level):
self.level = level
# 顯示正在設定的傷害。
print(self.damage)
@property
def damage(self)。
return self.level 5.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/310496.html
標籤:
上一篇:如何呼叫父類的實體方法?
