草庐IT

pthread_self

全部标签

python - 为什么 self 只是一个约定而不是真正的 Python 关键字?

据我所知,self只是一个非常强大的约定,并不是Python中真正的保留关键字。Java和C#将this作为关键字。我真的觉得很奇怪,他们没有在Python中为它做一个保留关键字。这背后有什么原因吗? 最佳答案 因为self只是一个函数的参数,就像任何其他参数一样。例如,下面的调用:a=A()a.x()基本上转换为:a=A()A.x(a)不使self成为保留字也有一个幸运的结果,对于类方法,您可以将第一个参数重命名为其他名称(通常是cls)。当然,对于静态方法,第一个参数与调用它的实例没有关系,例如:classA:defmethod

python - Django 基于类的 View 中 self.request 和 request 的区别

在django中,对于像ListView和DetailView这样基于类的View,方法像get()或post()或开发者定义的其他函数带参数包括self和request。我了解到在self中,这些实际上是一个self.request字段,那么self.request和request?例如,这是基于类的View中的函数,用于处理用户的登录要求:deflogin(self,request):name=request.POST['name']pwd=request.POST['password']user=authenticate(username=name,password=pwd)if

python - 当我将带有 self 引用的列表分配给带有切片语法 `mylist[:] = [mylist, mylist, ...]` 的列表副本时,会发生什么?

我只是在看functools.lru_cache的实现,当我偶然发现这个片段时:root=[]#rootofthecirculardoublylinkedlistroot[:]=[root,root,None,None]#initializebypointingtoself我熟悉循环和双向链表。我还知道new_list=my_list[:]创建了my_list的副本。在查找切片分配或循环双向链表的其他实现时,我找不到有关此特定语法的任何更多信息。问题:在这种情况下发生了什么。是否有不同的语法来实现相同的结果?some_list[:]是否有不同的常见用例=some_iterable(没有

python - 为什么我们不能 **unsplat 'self' 到一个方法中?

这个问题在这里已经有了答案:Whycan'tIpassselfasanamedargumenttoaninstancemethodinPython?(1个回答)关闭8年前。>>>classPotato(object):...defmethod(self,spam):...printself,spam...>>>spud=Potato()作品:>>>Potato.method(spud,**{'spam':123})123不起作用:>>>Potato.method(**{'self':spud,'spam':123})#TypeError但为什么不呢?我认为“self”只是一种约定俗成,

python - 语法错误 "no viable alternative at input ' self '”

我有一个包含以下代码的gui.py文件:fromjavax.swingimportJFrame,JPanel,Box,JComboBox,JSpinner,JButton,JLabel,SpinnerNumberModel,WindowConstantsfromjava.awtimportBoxLayout,GridLayoutclassSettingsWindow:defstart(self):selected=self.combobox.selectedIndexifselected>=0:self.map=self.map_list[selected]self.games=sel

python - 为什么在多重继承中执行 Base.__init__(self) 而不是 super().__init__() 时会跳过 __init__?

为什么正是是A.__init__()B.__init__()D.__init__()由以下代码打印?特别是:为什么是C.__init__()未打印?为什么是C.__init__()如果我把super().__init__()打印出来而不是A.__init__(self)?#!/usr/bin/envpython3classA(object):def__init__(self):super(A,self).__init__()print("A.__init__()")classB(A):def__init__(self):A.__init__(self)print("B.__init__

python - python 中的 getattr(self, '__a' ) 和 self.__a 有什么区别?

在我运行这段代码之前,我认为它们是一样的:classB(object):defshow(self):self.__a="test"print"B"defthis_b(self):print"this_b"printself.__aprintgetattr(self,'__a')#exceptionclassC(B):defshow(self):print"C"#B.show(self)super(C,self).show()defcall(self):print"call"self.show()self.this_b()#printself.__aC().call()它引发了Attri

python - 在 Python 中, 'return self' 返回对象的副本还是指针?

假设我有一个类classA:defmethod(self):returnself如果调用方法,返回的是指向A对象的指针,还是该对象的副本? 最佳答案 它返回一个引用:>>>a=A()>>>id(a)40190600L>>>id(a.method())40190600L>>>aisa.method()True您可以这样想:您实际上将self作为参数传递给.method()函数,它返回相同的self。 关于python-在Python中,'returnself'返回对象的副本还是指针?,我们

python - 返回 self python的目的

我对returnself有疑问classFib:def__init__(self,max):self.max=maxdef__iter__(self):self.a=0self.b=1returnselfdef__next__(self):fib=self.aiffib>self.max:raiseStopIterationself.a,self.b=self.b,self.a+self.breturnfib这个问题我已经看过returnselfproblem但我不明白returnself有什么好处? 最佳答案 返回self来自方法

python - 如何在生成器对象中使用 unittest 的 self.assertRaises 异常?

我有一个生成器对象,我想对其进行单元测试。它经历了一个循环,当循环结束时某个变量仍然为0时,我引发了一个异常。我想对此进行单元测试,但我不知道如何进行。以这个示例生成器为例:classExample():defgeneratorExample(self):count=0forintinrange(1,100):count+=1yieldcountifcount>0:raiseRuntimeError,'anexampleerrorthatwillalwayshappen'我想做的是classtestExample(unittest.TestCase):deftest_generator