我Python程序中的缩进问题

1 投票
3 回答
575 浏览
提问于 2025-04-15 18:17

我正在使用以下代码,但遇到了一些缩进问题。

from django.db import models

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __unicode__(self):
        return self.question

我收到了以下错误信息。

File "E:\Softwares\Django-1.1.1.tar\.py", line 7
    def __unicode__(self):
    ^
IndentationError: unexpected indent

3 个回答

0

我在这里随便猜一下,虽然你提到的错误信息里有个文件名,这让我觉得我的猜测可能不太对,但没关系……

因为你的缩进看起来还不错(假设你是直接复制粘贴的),那么有可能你是把代码粘贴到了交互式解释器里吗?

在字段定义后面加了换行符,会让解释器认为类的定义已经结束,然后它就会回到全局作用域。这就意味着那个def的缩进其实是错误的。

* 顺便说一下,.py这个文件名其实不太适合用来命名Python脚本。

1

我同意其他人的看法,你可以使用一些编辑器来可视化空格,这样就能更好地检查了。例如,在vim中可以输入 set list listchars=tab:»·,trail:· 来显示空格和制表符的样子。(我记得gedit也有类似的插件。)

3

你很可能在缩进的时候混用了制表符和空格……最好只用空格或者只用制表符。现在最常用的风格是每个缩进级别用4个空格。

要解决这个具体的问题,检查一下 def __unicode__(self): 这一行的缩进,确保它和 pub_date = ... 这一行的缩进是一致的。然后在 return ... 这一行的基础上再加上4个空格。

撰写回答