草庐IT

new_bees

全部标签

python - 使用 __new__ 覆盖子类中的 __init__

我对使用__new__功能将代码注入(inject)子类的__init__函数很感兴趣。我从文档中了解到,python将在__new__返回的实例上调用__init__。但是,我在从__new__返回实例之前更改实例中__init__的值的努力似乎不起作用。classParent(object):def__new__(cls,*args,**kwargs):new_object=super(Parent,cls).__new__(cls)user_init=new_object.__init__def__init__(self,*args,**kwargs):print("New__i

python - 什么会导致 asyncio.new_event_loop() 的简单调用挂起?

我正在使用以下函数来强制协程同步运行:importasyncioimportinspectimporttypesfromasyncioimportBaseEventLoopfromconcurrentimportfuturesdefawait_sync(coro:types.CoroutineType,timeout_s:int=None):""":paramcoro:acoroutineorlambdaloop:coroutine(loop):paramtimeout_s::return:"""loop=asyncio.new_event_loop()#type:BaseEventL

python - 在从元类调用的类方法中调用 `super`.__new__

我有一个案例,我的类有一个自定义元类,它在创建它时调用类的类方法,比如:classMetaclass(type):def__new__(cls,name,bases,attrs):...new_class=super(Metaclass,cls).__new__(cls,name,bases,attrs)...new_class.get_fields()#dosomething...returnnew_classclassFooBar(object):__metaclass__=Metaclass@classmethoddefget_fields(cls):...(此类代码的示例在Ta

python - 为什么 Fraction 使用 __new__ 而不是 __init__?

我正在尝试创建一个新的不可变类型,类似于内置的Fraction但不是派生自它。分数类iscreatedlikethis:#We'reimmutable,souse__new__not__init__def__new__(cls,numerator=0,denominator=None):...self=super(Fraction,cls).__new__(cls)self._numerator=...self._denominator=...returnself但是我看不出这和有什么不同def__init__(self,numerator=0,denominator=None):..

python - Matplotlib 在使用 "Times New Roman"时设置粗体标题

最初我可以通过以下方式将图形标题设置为粗体:importMatplotlib.pyplotaspltplt.title("Test",fontweight="bold")但是一旦我使用fontname="TimesNewRoman",fontweight="bold"根本不会导致任何更改:importMatplotlib.pyplotaspltplt.title("Test",fontname="TimesNewRoman",fontweight="bold")如何将图标题设置为粗体? 最佳答案 假设您的系统上安装了它自己的粗体字体

视频异常检测 | UBnormal: New Benchmark for Supervised Open-Set Video Anomaly Detection

Acsintoae,A.,Florescu,A.,Georgescu,M.,Mare,T.,Sumedrea,P.,Ionescu,R.T.,Khan,F.S.,&Shah,M.(2021).UBnormal:NewBenchmarkforSupervisedOpen-SetVideoAnomalyDetection. ArXiv,abs/2111.08644.Paper: https://arxiv.org/abs/2111.08644 Code:GitHub-lilygeorgescu/UBnormal:UBnormal:NewBenchmarkforSupervisedOpen-SetV

python - Matplotlib:Times New Roman 显示为粗体

出于某种原因,在我的mpl绘图中使用TimesNewRoman时,它显示为粗体。其他字体都可以。这是一个最小的示例和结果(在Word文档中,用于与我期望的TimesNewRoman的外观进行比较)。importmatplotlibasmplimportmatplotlib.pyplotaspltwithplt.style.context('word'):fig=plt.figure(1,figsize=(3.4,2.1))ax1=plt.subplot(111)ax1.plot([1,2,3,4,5],'+--')ax1.text(0.5,3.5,r"Brown$\alpha+12\s

python - 为什么 super() 不能与 __new__ 以外的静态方法一起使用?

我知道__new__是一个静态方法,可以从中调用super()创建一个新对象,如下所示:>>>classA:...def__new__(cls):...print('__new__called')...returnsuper().__new__(cls)...>>>a=A()__new__called为什么super调用不能与其他静态方法一起使用?为什么以下会失败?>>>classB:...@staticmethod...deffuncB():...print('funcBcalled')...>>>classC(B):...@staticmethod...deffuncC():...

python - 当类实例由构造函数或 __new__ 创建时,确保 __init__ 只被调用一次

我试图理解当创建过程可以通过构造函数或通过__new__方法时,应该如何创建Python类的新实例。特别是,我注意到在使用构造函数时,__init__方法将在__new__之后自动调用,而当直接调用__new__时,__init__类不会被自动调用。我可以通过在__new__中嵌入对__init__的调用,在显式调用__new__时强制调用__init__,但是然后__init__将在通过构造函数创建类时最终被调用两次。例如,考虑下面的玩具类,它存储一个内部属性,即一个名为data的list对象:将此视为向量类。classMyClass(object):def__new__(cls,*

Python:elif 还是 new if?

什么更好用:ifvarinX:#do_whateverelif(varinY):#do_whatever2或:ifvarinX:#do_whateverifvarinY:#do_whatever2假设var不能同时出现在X和Y中……有什么规则或惯例吗?我应该使用elif吗?或者一个新的如果?还是没关系??编辑:很好的答案..但是我可以说如果第一个语句(#do_whatever)以return或break结尾吗?最终不会测试其他条件从而浪费系统资源或引起麻烦,可以做任何事情..我想...... 最佳答案 在某些情况下会有所不同。看这个