草庐IT

new_odds

全部标签

python - 类型错误 : object() takes no parameters after defining __new__

我真的不明白这段代码的错误在哪里:classPersonne:def__init__(self,nom,prenom):print("Appeldelaméthode__init__")self.nom=nomself.prenom=prenomdef__new__(cls,nom,prenom):print("Appeldelaméthode__new__delaclasse{}".format(cls))returnobject.__new__(cls,nom,prenom)personne=Personne("Doe","John")它给了我错误:Traceback(mostre

python - Pandas:同时分配多个 *new* 列

我有一个DataFramedf,其中有一列包含每一行的标签(除了每一行的一些相关数据)。我有一个字典labeldict,其键等于可能的标签,值等于与该标签相关的2元组信息。我想在我的框架上添加两个新列,一个用于对应于每行标签的2元组的每个部分。设置如下:importpandasaspdimportnumpyasnpnp.random.seed(1)n=10labels=list('abcdef')colors=['red','green','blue']sizes=['small','medium','large']labeldict={c:(np.random.choice(colo

python - super 和 __new__ 混淆

正如我刚刚学到的,我可以这样使用super():super(class,obj_of_class-or-_subclass_of_class)代码如下:#Case1classA(object):def__init__(self):print"Ainit"classB(A):def__init__(self):print"Binit"super(B,self).__init__()#ok,IcaninvokeA's__init__successfully#Case2classA(object):@classmethoddeffoo(cls):print"Afoo"classB(objec

Python:总是使用 __new__ 而不是 __init__?

我了解__init__和__new__的工作原理。我想知道是否有任何__init__可以做到而__new__不能做到的事情?即可以使用__init__替换为以下模式:classMySubclass(object):def__new__(cls,*args,**kwargs):self=super(MySubclass,cls).__new__(cls,*args,**kwargs)//Do__init__stuffherereturnself我之所以这么问,是因为我想让PythonOO的这一方面更适合我。 最佳答案 所以,一个类的类

python - `__init__` 能做什么而 `__new__` 不能?

在Python中,__new__用于初始化不可变类型,__init__通常用于初始化可变类型。如果__init__从语言中删除,什么不能再做(容易)?例如,classA:def__init__(self,*,x,**kwargs):super().__init__(**kwargs)self.x=xclassB(A):def__init__(self,y=2,**kwargs):super().__init__(**kwargs)self.y=y可以像这样使用__new__重写:classA_N:def__new__(cls,*,x,**kwargs):obj=super().__ne

python - "MetaClass"、 "__new__"、 "cls"和 "super"- 究竟是什么机制?

我读过这样的帖子:WhatisametaclassinPython?Whatareyour(concrete)use-casesformetaclassesinPython?Python'sSuperisnifty,butyoucan'tuseit但不知何故,我感到困惑。许多困惑,例如:我何时以及为什么必须执行以下操作?#Referlink1returnsuper(MyType,cls).__new__(cls,name,bases,newattrs)或#Referlink2returnsuper(MetaSingleton,cls).__call__(*args,**kw)或#Ref

python - Python 中的 __new__ 和 __init__

我正在学习Python,到目前为止,我可以讲述以下关于__new__和__init__的内容:__new__用于对象创建__init__用于对象初始化__new__在__init__之前调用,因为__new__返回一个新实例,然后调用__init__以初始化内部状态.__new__适用于不可变对象(immutable对象),因为它们一旦被分配就无法更改。所以我们可以返回具有新状态的新实例。我们可以对可变对象使用__new__和__init__,因为它的内部状态是可以改变的。但我现在还有其他问题。当我创建一个新实例如a=MyClass("hello","world")时,这些参数是如何传

python - pip 抛出 TypeError : parse() got an unexpected keyword argument 'transport_encoding' when trying to install new packages

我正在使用最新版本的Anaconda3。我刚刚安装了它,我正在尝试下载一些软件包。我正在使用Anaconda提示。在尝试使用pip做任何事情(包括升级现有软件包)时,我得到以下回溯。Exception:Traceback(mostrecentcalllast):File"C:\Users\csprock\Anaconda3\lib\site-packages\pip\basecommand.py",line215,inmainstatus=self.run(options,args)File"C:\Users\csprock\Anaconda3\lib\site-packages\pi

Python(和 Python C API): __new__ versus __init__

这个问题在这里已经有了答案:Whyis__init__()alwayscalledafter__new__()?(18个回答)关闭2个月前。我要问的问题似乎与Python'suseof__new__and__init__?重复,但无论如何,我仍然不清楚__new__和__init__之间的实际区别到底是什么。在你急于告诉我__new__用于创建对象而__init__用于初始化对象之前,让我明确一点:我明白了。事实上,这种区别对我来说很自然,因为我有C++方面的经验,我们有placementnew,这同样将对象分配与初始化分开。PythonCAPItutorial是这样解释的:Thene

java - new Runnable() 但没有新线程?

我正在尝试理解代码here,特别是匿名类privateRunnablemUpdateTimeTask=newRunnable(){publicvoidrun(){finallongstart=mStartTime;longmillis=SystemClock.uptimeMillis()-start;intseconds=(int)(millis/1000);intminutes=seconds/60;seconds=seconds%60;if(seconds文章说TheHandlerrunstheupdatecodeasapartofyourmainthread,avoidingth