小编Eri*_*got的帖子

对于新式类,super()引发"TypeError:必须是type,而不是classobj"

以下使用super()引发了一个TypeError:为什么?

>>> from  HTMLParser import HTMLParser
>>> class TextParser(HTMLParser):
...     def __init__(self):
...         super(TextParser, self).__init__()
...         self.all_data = []
...         
>>> TextParser()
(...)
TypeError: must be type, not classobj
Run Code Online (Sandbox Code Playgroud)

StackOverflow上有一个类似的问题:Python super()引发TypeError,其中错误的解释是用户类不是新式类.但是,上面的类是一个新式的类,因为它继承自object:

>>> isinstance(HTMLParser(), object)
True
Run Code Online (Sandbox Code Playgroud)

我错过了什么?我怎么用super(),在这里?

使用HTMLParser.__init__(self)而不是super(TextParser, self).__init__()工作,但我想了解TypeError.

PS:Joachim指出,作为一个新式的实例并不等同于一个object.我多次反复阅读,因此我的困惑(基于object实例测试的新式类实例测试示例:https://stackoverflow.com/revisions/2655651/3).

python super typeerror superclass

331
推荐指数
6
解决办法
13万
查看次数

Python中的False == 0和True == 1是一个实现细节还是由语言保证?

难道保证False == 0True == 1,在Python(假设他们没有被用户重新分配)?例如,无论Python的版本(现有的,可能的,未来的版本)是什么,它是否以任何方式保证以下代码将始终产生相同的结果?

0 == False  # True
1 == True   # True
['zero', 'one'][False]  # is 'zero'
Run Code Online (Sandbox Code Playgroud)

任何对官方文档的引用都将非常感谢!

编辑:正如许多答案所述,bool继承自int.因此,问题可以改写为:"文档是否正式表明程序员可以依赖于从整数继承的布尔值,以及值01?".这个问题与编写由于实现细节而不会失败的健壮代码有关!

python boolean equality language-specifications

230
推荐指数
3
解决办法
23万
查看次数

ImportError:没有名为PIL的模块

我在shell中使用此命令来安装PIL:

easy_install PIL
Run Code Online (Sandbox Code Playgroud)

然后我跑去python输入:import PIL.但我得到这个错误:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
ImportError: No module named PIL
Run Code Online (Sandbox Code Playgroud)

我从未遇到过这样的问题,您怎么看?

python easy-install python-imaging-library

171
推荐指数
18
解决办法
49万
查看次数

命名正则表达式组"(?P <group_name> regexp)":"P"代表什么?

在Python中,(?P<group_name>…) 语法允许通过其名称引用匹配的字符串:

>>> import re
>>> match = re.search('(?P<name>.*) (?P<phone>.*)', 'John 123456')
>>> match.group('name')
'John'
Run Code Online (Sandbox Code Playgroud)

"P"代表什么?我在官方文档中找不到任何提示.

我很想知道如何帮助我的学生记住这种语法.知道"P"代表什么(或可能代表什么)会很有用.

python regex regex-group

156
推荐指数
3
解决办法
10万
查看次数

如何用Python中的空心圆做散点图?

在Python中,使用Matplotlib,如何绘制带有空心圆的散点图?目标是在已经绘制的一些彩色圆盘周围绘制空心圆圈scatter(),以便突出显示它们,理想情况下无需重绘彩色圆圈.

我试过facecolors=None,但没有用.

python geometry scatter matplotlib scatter-plot

143
推荐指数
5
解决办法
18万
查看次数

Matplotlib:"未知投影'3d'"错误

我刚刚安装了matplotlib,并尝试运行其中一个示例脚本.但是我遇到了下面详述的错误.我究竟做错了什么?

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.gca(projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
cset = ax.contour(X, Y, Z, 16, extend3d=True)
ax.clabel(cset, fontsize=9, inline=1)

plt.show()
Run Code Online (Sandbox Code Playgroud)

错误是

Traceback (most recent call last):
  File "<string>", line 245, in run_nodebug
  File "<module1>", line 5, in <module>
  File "C:\Python26\lib\site-packages\matplotlib\figure.py", line 945, in gca
    return self.add_subplot(111, **kwargs)
  File "C:\Python26\lib\site-packages\matplotlib\figure.py", line 677, in add_subplot
    projection_class = get_projection_class(projection)
  File "C:\Python26\lib\site-packages\matplotlib\projections\__init__.py", line 61, in get_projection_class
    raise ValueError("Unknown projection '%s'" % projection)
ValueError: …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

114
推荐指数
3
解决办法
8万
查看次数

部分字符串格式

是否可以使用高级字符串格式化方法进行部分字符串格式化,类似于字符串模板safe_substitute()函数?

例如:

s = '{foo} {bar}'
s.format(foo='FOO') #Problem: raises KeyError 'bar'
Run Code Online (Sandbox Code Playgroud)

python string-formatting

109
推荐指数
9
解决办法
2万
查看次数

重定向到文件时的UnicodeDecodeError

我在Ubuntu终端(编码设置为utf-8)中运行此代码段两次,一次使用./test.py然后使用./test.py >out.txt:

uni = u"\u001A\u0BC3\u1451\U0001D10C"
print uni
Run Code Online (Sandbox Code Playgroud)

没有重定向它会打印垃圾.通过重定向,我得到了一个UnicodeDecodeError.有人可以解释为什么我只在第二种情况下得到错误,或者甚至更好地详细解释两种情况下幕后发生的情况?

python unicode

99
推荐指数
3
解决办法
3万
查看次数

如何在python中保存和恢复多个变量?

我需要将大约十二个对象保存到文件中,然后再恢复它们.我试图使用带有泡菜和搁置的for循环,但它无法正常工作.

编辑.
我试图保存的所有对象都在同一个类中(我之前应该已经提到过),我没有意识到我可以像这样保存整个类:

def saveLoad(opt):
    global calc
    if opt == "save":
        f = file(filename, 'wb')
        pickle.dump(calc, f, 2)
        f.close
        print 'data saved'
    elif opt == "load":
        f = file(filename, 'rb')
        calc = pickle.load(f)
    else:
        print 'Invalid saveLoad option'
Run Code Online (Sandbox Code Playgroud)

python variables object

94
推荐指数
6
解决办法
15万
查看次数

使用Python日志记录模块时,日志输出重复

我正在使用python logger.以下是我的代码:

import os
import time
import datetime
import logging
class Logger :
   def myLogger(self):
      logger = logging.getLogger('ProvisioningPython')
      logger.setLevel(logging.DEBUG)
      now = datetime.datetime.now()
      handler=logging.FileHandler('/root/credentials/Logs/ProvisioningPython'+ now.strftime("%Y-%m-%d") +'.log')
      formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
      handler.setFormatter(formatter)
      logger.addHandler(handler)
      return logger
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我在每个logger.info调用的日志文件中都有多个条目.我怎么解决这个问题?

python

89
推荐指数
10
解决办法
5万
查看次数