即使未全局定义变量,类仍会提供输出

时间:2019-05-30 10:05:43

标签: python python-2.7 class

定义一个类,该类将具有space-between来输入字符串,并space-evenly将其转换为大写,而另一个函数则使用getstring()

printstring()

结果是输入字符串应转换为大写。这段代码有效,但是不应该这样做,因为x没有全局范围。

另一个奇怪的事情是,如果在上面的代码中调用了“ sum”函数,则输入字符串不会转换为大写。它将只打印输入中给出的字符串并给出总和。

2 个答案:

答案 0 :(得分:0)

要获得大写结果,请更改您的getstring函数,如下所示:

def getstring(self):
    print "Please enter input"
    self.x=raw_input().upper()
    return x

您需要在变量中分配str.upper()结果,upper()方法无法就地工作

答案 1 :(得分:0)

  

此代码有效,但由于x没有全局作用域,因此不起作用。

gettering函数中的

x没有全局范围,但self.x却具有全局范围,它与对象一起使用,而您不需要对其进行全局范围。

  

另一个奇怪的事情是,如果在上面的代码中调用了“ sum”函数,则输入字符串不会转换为大写。它将只打印输入中给出的字符串并给出总和。

在我的电脑上它仍然变成大写,我想可能是因为您使用的是python 2.7而我使用的是3.6。如果您尚未完成许多项目,建议您立即切换,因为许多库与2.7不兼容