当我运行它时,我得到'is_number'的NameError。是否可以访问另一个功能的功能?我怎么能让'is_number'工作?
class Bank_Account():
account = 0
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
def deposit(self, amt):
self.amt = amt
if is_number(str(amt)):
return "Invalid Input"
else:
self.account += float(amt)
答案 0 :(得分:1)
您将is_number
放在类的主体中,使其成为一种方法。
您需要将其移动到 out 类主体,或者通过给它一个self
参数使其成为正确的方法,然后在实例上调用它:
if self.is_number(amt):
由于您的is_number
函数与该类的其余部分几乎没有关系,您可以将它移出:
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
class Bank_Account():
account = 0
def deposit(self, amt):
self.amt = amt
if is_number(amt):
return "Invalid Input"
else:
self.account += float(amt)
答案 1 :(得分:0)
是的,完全可以访问另一个函数中的函数。
您的代码无效的原因是is_number
被定义为类Bank_Account
的成员函数或方法
这意味着它需要在定义中包含self
参数,您需要将其称为self.is_number
。
或者,或者,你需要将它移到课外,这是一个全局函数。
(或者,更常见的是,使用@staticmethod
。)
答案 2 :(得分:-1)
您在班级中定义了is_number
函数,因此您需要调用self.is_number
。
class Bank_Account(object):
def __init__(self):
self.placeholder = None
account = 0
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
def deposit(self, amt):
self.amt = amt
if self.is_number(str(amt)):
return "Invalid Input"
else:
self.account += float(amt)