每次使用speakRemember()函数时,如何停止运行remember()函数的代码



我有一个记忆系统的代码:

def remember():
speak('What do you want me to remember sir?')
toRemember = input('What should I remember? ')
speak('ok, i will remember: ' + toRemember)
return toRemember

def speakRemember():
toRemember = remember()
speak('this is what you told mke to remember: '+toRemember)

每当我触发speakRemember((函数,它从remember((中获取数据时,它就会运行remember(函数。我认为错误在这里:toRemember = remember()但我不明白为什么它会运行另一个函数。如果有人知道这是一个错误还是人为错误,请告诉我!

(没有错误(

详细阐述我的评论:

class Remember:
def __init__(self, to_remember=None):
self.to_remember = to_remember
def __call__(self):
self.to_remember = input('What Should I remember? ')
def __str__(self):
return f"this is what you told me to remember: {toRemember}"
def __repr__(self):
retrun self.__str__
# If you want to print response while setting a value:
def remember_this(self):
print('What do you want me to remember sir?')
self()
print(f"ok, I will remember: {self.to_remember}")

remember = Remember()
remember()
>> What Should I remember? This
print(remember.to_remember)
>>> 'This'
print(remember)
>>> this is what you told me to remember: This
remember.remember_this()
>>> What do you want me to remember sir?
>>> What Should I remember? That
>>> ok, I will remember: That
print(remember)
>>> this is what you told me to remember: That

如果调用类的实例(在本例中为remember(,则使用__call__函数。您还可以创建不同的函数来更改类属性。

__str____repr__函数用于方便地打印字符串中的值。

你说得对。在编写toRemember = remember()时,将调用函数remember((。toRemember的值将是remember()函数的返回值。当您编写此语句时,函数将被执行,最终返回值将是toRemember的值

最新更新