Python Class - 找不到如何在另一个方法中使用方法 return 值

Python Class - Can't find out how to use method return value within another method

这就是我正在测试的class:

class Test:

    def find_string(self, string):
        self.string = string
        return string.find(string)

    def add_string(self, string):
        found = self.find_string('bar')

        if found == -1:
            string = string + ' bar'
            
        return string

这是我的设置:

test_string = 'foo'

Test1 = Test()
new_string = Test1.add_string(string)

结果

Expected result: foo bar
Result: foo

如果我用直接函数 find() 替换 add_string 中的方法调用,它工作正常。请帮助我。

对我来说所有的问题是变量有相似的名字,这可能会产生误导。

你的 string.find(string) 意味着 "bar".find("bar") 但你期望 "foo".find("bar")

您必须在 add_string() 中使用 self.string = string(而不是 find_string()),然后在 find_string() 中使用 self.string.find(string) 而不是 string.find(string) - 然后你将在 self.string 中有 "foo" 并且在 string 中有 "bar" 所以最后 self.string.find(string) 将意味着 "foo".find("bar")

class Test:

    def find_string(self, string):
        return self.string.find(string)

    def add_string(self, string):
        self.string = string

        found = self.find_string('bar')

        if found == -1:
            string = string + ' bar'
            
        return string

# --- main ---

test_string = 'foo'

test = Test()   # PEP8: `lower_case_names` for variables 
new_string = test.add_string(test_string)

print(new_string)

PEP 8 -- Style Guide for Python Code