【问题标题】:Classes in Python, string errorsPython中的类,字符串错误
【发布时间】:2015-01-16 18:45:51
【问题描述】:

我是一名 Python 业余程序员,有一项任务要完成。在编写课程时,我经常遇到各种字符串错误的问题。这是有问题的部分:

类的开头,命名库写得很好,除了这个:

def __str__(self):
        return self.booklist()
        print 'There are several books inside this list: ', self.howMany
        i = 1
        for book in self.booklist:
            print i
            print self.booklist[i-1]
            i += 1

self.booklist 是一个列表(它已正确完成) self.howMany 是这个列表的长度 书是不同的类别。 我想得到一套清单上的书——清单上的一些书和上一课给出的书的详细信息。 问题在于最后一部分的写作技巧。

【问题讨论】:

  • 不确定你是否知道,但是一旦函数遇到return 语句,它就会停止执行。之后出现的所有行都将无效。
  • 好吧,我不知道
  • 但我尝试进行打印,但仍然遇到字符串问题
  • __str__ 函数应该返回对象的字符串表示,而不是打印它。顺便说一句,你的“字符串问题”会不会是TypeError: __str__ returned non-string?

标签: python string class python-2.7 object


【解决方案1】:

在return self.booklist() 部分之后,您的所有代码都不是进程。你以return self.booklist() 开始你的函数,所以实际上你的函数等于;

def __str__(self):
    return self.booklist()

而不是返回它,而是定义一个变量来获取您的列表。您应该将函数的 return 结尾或 if-elif 语句存储。一个例子;

def smt():
    return "Hello"
    for x in range(5):
        print (x)
print (smt())

输出;

>>> 
Hello
>>> 

如您所见,只打印了“Hello”。 return 之后的代码不会被处理。但是如果你改变你的功能;

def smt():
    a="Hello"
    for x in range(5):
        print (x)
    return a

输出是;

>>> 
0
1
2
3
4
Hello
>>> 

您可以在某些方面认为return 类似于break。因此,如果返回部分在您的函数中的某处被处理,就像您的函数停止读取其他代码一样。

【讨论】:

  • @esse,因为您发现此答案很有帮助,您应该考虑通过单击绿色复选标记来接受它。这通常会给编写它的人提供声誉积分。
猜你喜欢
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2012-03-24
  • 1970-01-01
  • 2016-10-11
  • 2013-12-08
  • 1970-01-01
相关资源
最近更新 更多