[英]Get the return value from a function in a class in Python
我試圖通過一個帶有返回值的簡單函數簡單地從我的類中獲取值,我確定它是一個微不足道的錯誤,但我對python來說很新
我有一個簡單的類設置如下:
class score():
#initialize the score info
def __init__(self):
self.score = 0
self.num_enemies = 5
self.num_lives = 3
# Score Info
def setScore(num):
self.score = num
# Enemy Info
def getEnemies():
return self.num_enemies
# Lives Info
def getLives():
return self.getLives
etc.....
比我創建類的實例:
scoreObj = score()
for enemies in range(0, scoreObj.getEnemies):
enemy_sprite.add(enemy())
我得到的錯誤是預期整數,但它有一個實例方法
獲取此信息的正確方法是什么?
謝謝!
scoreObj.getEnemies
是對該方法的引用。 如果你想調用它,你需要括號: scoreObj.getEnemies()
。
您應該考慮為什么使用這種方法而不是直接讀取self.num_enemies
。 在Python中不需要像這樣的普通getter / setter方法。
python中成員函數的第一個參數是返回Object的引用。
傳統上你稱之為“自我”,但不管你稱之為第一個參數,它都會引用“自我”對象:
每當我在python中得到關於參數類型的奇怪錯誤時,我會檢查是否忘記了自我參數。 幾次被這個錯誤所困擾。
class score():
#initialize the score info
def __init__(self):
self.score = 0
self.num_enemies = 5
self.num_lives = 3
# Score Info
def setScore(self, num):
self.score = num
# Enemy Info
def getEnemies(self):
return self.num_enemies
# Lives Info
def getLives(foo): #foo is still the same object as self!!
return foo.num_lives
#Works but don't do this because it is confusing
class score():
def __init__(self):
self.score = 0
self.num_enemies = 5
self.num_lives = 3
def setScore(self, num):
self.score = num
def getEnemies(self):
return self.num_enemies
def getLives(self):
return self.getLives
scoreObj = score()
for enemy_num in range(0, scoreObj.getEnemies()):
print enemy_num
# I don't know what enemy_sprite is, but
# I commented it out and just print the enemy_num result.
# enemy_sprite.add(enemy())
學過的知識:
類函數必須始終采用一個參數self
。 那是因為當你在類中調用一個函數時,你總是以類名作為調用對象來調用它,例如:
scoreObj = score()
scoreObj.getEnemies()
其中x
是類對象,它將作為根對象傳遞給getEnemies()
,這意味着發送給類的第一個參數。
其次,當在一個類(或根本)中調用函數時,總是以()
結束,因為這是在Python中調用某些東西的定義。
然后,問問自己, “為什么我不是這樣取得'scoreObj.num_lives'呢?我能節省處理能力嗎?” 按照您的選擇執行,但如果您直接從類對象獲取值,它會更快,除非您想同時計算內容。 然后你的邏輯很有意義!
getEnemies
是一個函數,所以像任何其他函數scoreObj.getEnemies()
一樣調用它
你犯了一個簡單的錯誤:
scoreObj.getEnemies()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.