2016-11-21 158 views
-9
class Clock(object): 
    def __init__(self, time): 
     self.time = time 
    def print_time(self): 
     time = '6:30' 
     print(self.time) 

clock = Clock('5:30') 
clock.print_time() 

为什么打印5:30而不是'5:30'为什么Python返回整数而不是字符串

+3

'5:30'不是一个整数。 – corn3lius

+2

引号不是字符串的一部分,“5:30”不是int – depperm

回答

3

当你编写一个python程序时,需要在引号内放置字符串,以便解析器知道它们是字符串。所以,你输入

>>> time = 5:30 
    File "<stdin>", line 1 
    time = 5:30 
      ^
SyntaxError: invalid syntax 
>>> 
>>> time = '5:30' 
>>> 

但是python并没有真正把引号本身存储在字符串中。它创建一个str类型的对象,其值为5:30。当你打印字符串时,它会打印这个值,而不是打开python解析器工作所需的引用表示。

Python对象有两种显示自己的方法。 __str__返回预期的人类可读字符串,而__repr__返回通常包含类型信息的程序员友好字符串。对于一个字符串,它包含引号。如果你真的想出于某种原因的报价,你可以使用repr

>>> time = '5:30' 
>>> print(time) 
5:30 
>>> print(type(time)) 
<class 'str'> 
>>> print(repr(time)) 
'5:30' 
>>> 
1

""''只是划定一个字符串,他们是不是它的一部分,因此不会被打印出来。 程序在此处正确地打印字符串。 (5:30是不是整数反正)

PS:我不知道,如果在print_timetime = '6:30'是应该改变的时间属性,Clock,但如果是,应该是self.time = '6:30'。当前的指令没有任何影响。

相关问题