我想將方法??中的d值can_add用于add方法,但得到錯誤'MoneyBox' object has no attribute 'd'。如何使用d值的add方法?
class MoneyBox:
def __init__(self, capacity = 0):
self.capacity = capacity
def can_add(self, v):
self.v = v
if self.capacity > self.v:
self.d = True
return d
else:
self.d = False
return self.d
def add(self, v):
self.can_add(v)
if self.d == True:
self.v = v
f = self.capacity - self.v
return f
a = MoneyBox(10)
a.add(5)
uj5u.com熱心網友回復:
d 不是類的變數,而只是在can_add方法中,因此您無法在add方法中訪問它。
更重要的是,無論如何你都不需要它,只需回傳真/假。
class MoneyBox:
def __init__(self, capacity = 0):
self.capacity = capacity
def can_add(self, v):
if self.capacity > v:
return True
else:
return False
def add(self, v):
if self.can_add(v) == True:
v = v
f = self.capacity - v
return f
a = MoneyBox(10)
a.add(5)
uj5u.com熱心網友回復:
當您想回傳區域變數時,您正在嘗試回傳一個類變數。
class MoneyBox:
def __init__(self, capacity = 0):
self.capacity = capacity
def can_add(self, v):
self.v = v
if self.capacity > self.v:
d = True
return d
else:
d = False
return d
def add(self, v):
d = self.can_add(v)
if d == True:
self.v = v
f = self.capacity - self.v
return f
a = MoneyBox(10)
a.add(5)
如果您希望將值保存在類變數中,您可以這樣做
class MoneyBox:
def __init__(self, capacity = 0):
self.capacity = capacity
self.d = False
def can_add(self, v):
self.v = v
if self.capacity > self.v:
self.d = True
else:
self.d = False
def add(self, v):
self.can_add(v)
if self.d == True:
self.v = v
f = self.capacity - self.v
return f
a = MoneyBox(10)
a.add(5)
uj5u.com熱心網友回復:
您不需要該can_add方法回傳任何內容,因為當您在 中呼叫它時add,self.d屬性已經更新。因此,只需更改can_add為以下內容,一切都會按預期進行:
def can_add(self, v):
self.v = v
if self.capacity > self.v:
self.d = True
else:
self.d = False
話雖如此,我強烈建議初始化所有類實體變數,__init__以便您的定義都在一個地方并且更具可讀性。所以像:
def __init__(self, capacity = 0):
self.capacity = capacity
self.v = None
self.d = None
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/392219.html
上一篇:python類中的函式
