我有一个类,我正在尝试在类中的函数内创建一个函数。我的代码是这样的:
class example:
def __init__(self):
self.points = 0
def operations(self):
def add(self):
self.points += 1
def subtract(self):
self.points -= 1
def display(self):
print(self.points)
obj = example()
obj.display()
obj.operations.add()
我得到输出 0 ,然后得到错误:
obj.operations.add()
AttributeError: 'function' object has no attribute 'add'
我已经尝试了许多其他方法来解决这个问题,但没有一个方法可行。 如果您知道如何解决此错误,请回答。
-Thanks
答案 0 :(得分:-2)
您可以尝试从函数返回函数,然后使用它们 -
class example:
def __init__(self):
self.points = 0
def operations(self):
def add():
print "add is called"
self.points += 1
def subtract():
self.points -= 1
return [add, subtract]
def display(self):
print(self.points)
obj = example()
obj.display()
obj.operations()[0]()
obj.display()
如果您特别希望使用obj.operations.add()
进行此操作,则可以尝试以这种方式进行聚合(它涉及使用类变量,如果这对您好的话)
class example:
points = 0
def __init__(self):
example.points = 0
self.operations = Operations(self)
def display(self):
print(self.points)
class Operations(example):
def __init__(self, ex):
self.points = ex.points
def add(self):
print "add is called"
example.points += 1
def subtract(self):
example.points -= 1
obj = example()
obj.display()
obj.operations.add()
obj.display()
obj.operations.subtract()
obj.display()
希望它可能有所帮助!