简体   繁体   English

每次我使用 speakRemember() function 时,如何停止运行 remember() function 的代码?

[英]How do I stop the code running the remember() function every time I use speakRemember() function?

I have this code for a remembering system:我有一个记忆系统的代码:

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)

whenever I trigger the speakRemember() function and it gets the data from the remember() it ends up running the remember() function.每当我触发 speakRemember() function 并从 remember() 获取数据时,它最终会运行 remember() function。 I think the error is here: toRemember = remember() but I don't see why it would run the other function.我认为错误在这里: toRemember = remember()但我不明白为什么它会运行另一个 function。 If anyone knows if this is a bug or just human error please tell me!如果有人知道这是错误还是人为错误,请告诉我!

(there are no errors) (没有错误)

To elaborate on my comment:详细说明我的评论:

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

If you call the instance of your class (in this case remember ) the __call__ function is used.如果您调用 class 的实例(在这种情况下remember ),则使用__call__ function。 You can also create different function to change class attributes.您还可以创建不同的 function 来更改 class 属性。

The __str__ and __repr__ functions are use to make it easy to print the values in a string. __str____repr__函数用于轻松打印字符串中的值。

You're right.你是对的。 The function remember() is being called when you write toRemember = remember() . function remember() 在你写toRemember = remember()时被调用。 The value of toRemember will be the return value of remember() function. toRemember的值将是remember() function 的返回值。 When you write this statement, the function gets executed and the final return value will be the value of toRemember当您编写此语句时,function 将被执行,最终返回值将是toRemember的值

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM