__Contains__做什么,可以称为__Contains___________________________________________________________

这是我的代码: class a(object): d='ddd' def __contains__(self): if self.d:return True b=a() print b.contains('d') # error print contains(b,'d') # error 答案 像所有特殊方法一样(带有"魔术名称"开始和结束__),__contains__是not 打算直接调用(在非常具体的情况下,例如UP =对超类的调用):相反,此类方法被称为内置和操作员操作的一部分。如果是__contains__,有问题的操作员是in——“收容检查"操作员。 和你的课a在您提出的时(除了修复错字,并使用True代替true!-), 和b作为实例,print 'x' in b会打印True - 任何其他遏制都会检查b, 自从b总是返回True(因为self.d,一个非空字符串是正确的)。 来自: stackoverflow.com

__EQ__如何在python中处理?

由于Python不提供其比较运算符的左/右版本,因此如何决定要调用哪种功能? class A(object): def __eq__(self, other): print "A __eq__ called" return self.value == other class B(object): def __eq__(self, other): print "B __eq__ called" return self.value == other >>> a = A() >>> a.value = 3 >>> b = B() >>> b.value = 4 >>> a == b "A __eq__ called" "B __eq__ called" False 这似乎都在打电话__eq__功能。 我正在寻找官方的决策树。 答案 这a == b表达式调用A.__eq__,因为它存在。它的代码包括self.value == other。由于INT不知道如何将自己与B进行比较,因此Python尝试调用B.__eq__看看它是否知道如何将自己与int进行比较。 如果您修改代码以显示正在比较的值: class A(object): def __eq__(self, other): print("A __eq__ called: %r == %r ?...

__getattr__ 和 __getattribute__ 之间的区别

我试图理解何时定义__getattr__或者__getattribute__。python 文档提及__getattribute__适用于新式班级。 答案 之间的一个关键区别__getattr__和__getattribute__就是它__getattr__仅当未按通常方式找到该属性时才调用。 __getattribute__在查看对象的实际属性之前调用,因此正确实现可能很棘手。 新式类源自object,旧式类是 Python 2.x 中没有显式基类的类。__getattr__和__getattribute__。 你几乎肯定想要__getattr__。 来自: stackoverflow.com

__init __()获得了意外的关键字参数“用户”

当创建用户时,我正在使用Django创建用户和对象。但是有一个错误 __init__() got an unexpected keyword argument 'user' 打电话时register()view.py中的功能。该功能是: def register(request): '''signup view''' if request.method=="POST": form=RegisterForm(request.POST) if form.is_valid(): username=form.cleaned_data["username"] email=form.cleaned_data["email"] password=form.cleaned_data["password"] user=User.objects.create_user(username, email, password) user.save() return HttpResponseRedirect('/keenhome/accounts/login/') else: form = RegisterForm() return render_to_response("polls/register.html", {'form':form}, context_instance=RequestContext(request)) #This is used for reinputting if failed to register else: form = RegisterForm() return render_to_response("polls/register.html", {'form':form}, context_instance=RequestContext(request)) 对象类是: class LivingRoom(models.Model): '''Living Room object''' user = models.OneToOneField(User) def __init__(self, temp=65): self.temp=temp TURN_ON_OFF = ( ('ON', 'On'), ('OFF', 'Off'), ) TEMP = ( ('HIGH', 'High'), ('MEDIUM', 'Medium'), ('LOW', 'Low'), ) on_off = models....

__init __()应该致电父母级的__init __()吗?

我在Objective-C中使用了此结构: - (void)init { if (self = [super init]) { // init class } return self; } 也应该Python调用父类的实现__init__? class NewClass(SomeOtherClass): def __init__(self): SomeOtherClass.__init__(self) # init class 这也是对的还是错误的__new__()和__del__()? Edit: 有一个非常相似的问题:继承和覆盖__init__在Python 答案 在Python中,称为超级班级__init__是可选的。如果您称其为super标识符,或者是否显式命名超类: object.__init__(self) 在对象的情况下,由于超级方法是空的,因此调用超级方法不是严格必要的。相同__del__。 另一方面,对于__new__,你确实应该调用 super 方法,并使用它的返回作为新创建的对象 - 除非你明确想要返回不同的东西。 来自: stackoverflow.com

__init__ for UnitTest.testcase

我想添加几件事unittest.TestCase班级在被初始化后会做,但我不知道该怎么做。 现在我要这样做: #filename test.py class TestingClass(unittest.TestCase): def __init__(self): self.gen_stubs() def gen_stubs(self): # Create a couple of tempfiles/dirs etc etc. self.tempdir = tempfile.mkdtemp() # more stuff here 我希望在整个测试中只生成所有存根一次。我不能使用setUpClass()因为我正在使用Python 2.4(我也无法在Python 2.7上工作)。 我在这里做错了什么? 我得到这个错误: `TypeError: __init__() takes 1 argument (2 given)` …以及当我将所有存根代码移动到__init__当我用命令运行它python -m unittest -v test。 答案 尝试这个: class TestingClass(unittest.TestCase): def __init__(self, *args, **kwargs): super(TestingClass, self).__init__(*args, **kwargs) self.gen_stubs() 你正在覆盖TestCase’__init__,因此您可能需要让基类为您处理参数。 来自: stackoverflow.com

__init__() 缺少 1 个必需的位置参数

我正在努力学习Python。 缺少 1 个必需的位置参数 这是我的代码: class DHT: def __init__(self, data): self.data['one'] = '1' self.data['two'] = '2' self.data['three'] = '3' def showData(self): print(self.data) if __name__ == '__main__': DHT().showData() 答案 您收到此错误是因为您没有通过dataDHT 构造函数的变量。 aIKid 和 Alexander 的答案很好,但它不起作用,因为你仍然需要初始化self.data在类构造函数中像这样: class DHT: def __init__(self, data=None): if data is None: data = {} else: self.data = data self.data['one'] = '1' self.data['two'] = '2' self.data['three'] = '3' def showData(self): print(self.data) 然后像这样调用 showData 方法: DHT().showData() 或者像这样: DHT({'six':6,'seven':'7'}).showData() 或者像这样: # Build the class first dht = DHT({'six':6,'seven':'7'}) # The call whatever method you want (In our case only 1 method available) dht....

__init__和__call__有什么区别?

我想知道__init__和__call__方法。 例如: class test: def __init__(self): self.a = 10 def __call__(self): b = 20 答案 第一个用于初始化新创建的对象,并收到用于这样做的参数: class Foo: def __init__(self, a, b, c): # ... x = Foo(1, 2, 3) # __init__ 第二个实现函数调用运算符。 class Foo: def __call__(self, a, b, c): # ... x = Foo() x(1, 2, 3) # __call__ 来自: stackoverflow.com

__repr__方法的目的?

def __repr__(self): return '<%s %s (%s:%s) %s>' % ( self.__class__.__name__, self.urlconf_name, self.app_name, self.namespace, self.regex.pattern) 这种方法的意义/目的是什么? 答案 __repr__应该返回对象的可打印表示形式,很可能一 创建此对象的可能方式。请参阅官方文档这里。__repr__更适合开发人员__str__适用于最终用户。 一个简单的例子: >>> class Point: ... def __init__(self, x, y): ... self.x, self.y = x, y ... def __repr__(self): ... return 'Point(x=%s, y=%s)' % (self.x, self.y) >>> p = Point(1, 2) >>> p Point(x=1, y=2) 来自: stackoverflow.com

__STR__和__repr__的目的是什么?

我真的不明白在哪里__str__和__repr__用于Python。我的意思是,我明白了__str__返回对象的字符串表示。但是为什么我需要那个呢?在什么用例情况下?另外,我读到了__repr__ 但是我不明白的是,我会在哪里使用它们? 答案 __repr__ 由repr()内置功能和通过字符串转换(反向引号)计算对象的"官方"字符串表示。如果可能的话,这看起来应该像有效的python表达式,可用于重新创建具有相同值的对象(给定适当的环境)。 __str__ 由str()内置函数并通过 print 语句来计算对象的"非正式"字符串表示形式。 使用__str__如果您有课程,并且只要将此对象用作字符串的一部分,则需要提供信息/非正式的输出。例如。您可以定义__str__Django 模型的方法,然后在 Django 管理界面中呈现。<Model object>您会得到一个人的名字和姓氏,事件的名称和日期,等等。 __repr__和__str__相似,实际上有时是相等的(例如BaseSet上课sets.py从标准库): def __repr__(self): """Return string representation of a set. This looks like 'Set([<list of elements>])'. """ return self._repr() # __str__ is the same as __repr__ __str__ = __repr__ 来自: stackoverflow.com

__STR__和__repr__有什么区别?

有什么区别__str__和__repr__在python? 答案 亚历克斯总结很好,但是令人惊讶的是,太简洁了。 首先,让我重申要点亚历克斯的帖子: 默认实施是没有用的(很难想到一个不会,但是是的) __repr__目标是明确 __str__目标是可读 集装箱的__str__使用包含对象__repr__ Default implementation is useless 这主要是一个惊喜,因为Python的默认值往往相当有用。但是,在这种情况下,有一个默认__repr__它会像: return "%s(%r)" % (self.__class__, self.__dict__) 可能太危险了(例如,如果对象相互引用,那么容易进入无限的递归)。所以python应付了。请注意,有一个默认值是正确的:如果__repr__定义,__str__不是,对象的行为会好像__str__=__repr__。 这意味着简单地说:几乎您实现的每个对象都应具有功能__repr__这是可以理解对象的可用性。实施__str__是可选的:如果您需要"漂亮的打印"功能(例如,报告生成器使用)。 The goal of __repr__ is to be unambiguous 让我马上说出来 - 我不相信辩论者。我真的不知道如何使用任何调试器,也从未认真使用过调试器。此外,我相信辩论者的最大错是他们的基本本质 - 我调试的大多数失败发生在很久以前,在一个很远的银河系中。这意味着我确实相信,在宗教热情中,伐木。记录是任何不错的火灾服务器系统的命运文献。Python使登录变得容易:使用某些特定项目包装器,您需要的只是一个 log(INFO, "I am in the weird function and a is", a, "and b is", b, "but I got a null C --- using default", default_c) 但是您必须执行最后一步 - 确保您实现的每个对象都有一个有用的reter,因此像这样的代码可以正常工作。这就是"评估"事情出现的原因:如果您有足够的信息,所以eval(repr(c))==c,这意味着您知道有关的一切c。c反正。我通常使用类似评估的格式:"MyClass(this=%r,that=%r)" % (self.this,self.that)。这并不意味着您实际上可以构建MyClass,也不意味着这些是正确的构造方参数,而是表达"这是您需要了解的有关此实例的所有内容"的有用形式。 注意:我用过%r上面,不是%s。你总是想使用repr()[或者%r格式化字符,等效]__repr__实施,或者您正在击败重复的目标。您希望能够区分MyClass(3)和MyClass("3")。 The goal of __str__ is to be readable...

__所有__在Python中意味着什么?

我懂了__all__在__init__.py文件。它有什么作用? 答案 这是该模块的公共对象列表,如import *。它覆盖了隐藏所有以下划线开头的所有内容的默认值。 来自: stackoverflow.com

_CSV.Error:大于场限制的场(131072)

我在CSV文件中有一个脚本读取的字段非常庞大: # example from http://docs.python.org/3.3/library/csv.html?highlight=csv%20dictreader#examples import csv with open('some.csv', newline='') as f: reader = csv.reader(f) for row in reader: print(row) 但是,这会在某些CSV文件上丢下以下错误: _csv.Error: field larger than field limit (131072) 如何用庞大的字段分析CSV文件?跳过巨大字段的线路不是一个选择,因为需要在随后的步骤中分析数据。 答案 CSV文件可能包含非常大的字段,因此增加field_size_limit: import sys import csv csv.field_size_limit(sys.maxsize) sys.maxsize适用于Python 2.x和3.x。sys.maxint只能与Python 2.x一起使用(因此:什么是python-3) 更新 正如杰夫(Geoff)指出的那样,上面的代码可能会导致以下错误:OverflowError: Python int too large to convert to C long。为了解决这个问题,您可以使用以下快速而肮脏代码(应使用Python 2和Python 3使用每个系统): import sys import csv maxInt = sys.maxsize while True: # decrease the maxInt value by factor 10 # as long as the OverflowError occurs....

_tkinter.TclError:没有显示名称,也没有 $DISPLAY 环境变量

我正在服务器中运行一个简单的 python 脚本: import matplotlib.pyplot as plt import numpy as np x = np.random.randn(60) y = np.random.randn(60) plt.scatter(x, y, s=20) out_png = 'path/to/store/out_file.png' plt.savefig(out_png, dpi=150) 我尝试使用命令python example.py在安装了 matplotlib 1.5.1 的服务器中,它失败并出现错误: Traceback (most recent call last): File "example.py", line 7, in <module> plt.scatter(x, y, s=20) File "/home/USER/.virtualenvs/nnet/lib/python2.7/site-packages/matplotlib/pyplot.py", line 3241, in scatter ax = gca() File "/home/USER/.virtualenvs/nnet/lib/python2.7/site-packages/matplotlib/pyplot.py", line 928, in gca return gcf().gca(**kwargs) File "/home/USER/.virtualenvs/nnet/lib/python2.7/site-packages/matplotlib/pyplot.py", line 578, in gcf return figure() File "/home/USER/....

-e,-ededable选项何时对PIP安装有用?

什么时候会-e, 或者--editable选项有用pip install? 对于某些项目,需求的最后一行。txt是-e .。它到底做什么? 答案 正如人页面所说的那样: -e,--editable <path/url> Install a project in editable mode (i.e. setuptools "develop mode") from a local project path or a VCS url. 因此,当您尝试在本地安装软件包时,您将使用此功能,最常在您在系统上开发它的情况下。它只会将软件包链接到原始位置,基本上意味着对原始软件包的任何更改都会直接反映在您的环境中。 相同的一些掘金这里和这里。 一个示例运行可以是: pip install -e . 或者 pip install -e ~/ultimate-utils/ultimate-utils-proj-src/ 注意第二个是通往位置的完整途径setup.py会在。 来自: stackoverflow.com