在 python attrs 类中,如何用我自己的覆盖生成的 __init__

马球

所以我喜欢使用 attr 但有时我需要做我自己的事情。我可以__init__用自己方法覆盖该方法吗?

import attr
@attr.s(auto_attribs=True)
class MyClass:
     i: int
     def __init__(self, i, special=None):
          if special:
               self.i = special
          else:
               self.i = i
>>> a = MyClass(i=1,special=2)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
    a = MyClass(i=1,special=2)
TypeError: __init__() got an unexpected keyword argument 'special'

另一个例子:

@attr.s(auto_attribs=True)
class MyOtherClass:
     i: int
     def __init__(self, i, **kwargs):
         self.i = kwargs.get('magic',i)



>>> a = MyOtherClass(i=5,magic=12)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
    a = MyOtherClass(i=5,magic=12)
TypeError: __init__() got an unexpected keyword argument 'magic'
海尼克

如果您通过@attr.s(auto_attribs=True, init=False),则 attrs 将不会创建__init__方法(对于repr, eq, ...的作用相同)。


从 attrs 20.1.0 开始,如果您传递@attr.s(auto_attribs=True, auto_detect=True)或使用 NG API @attr.define(不需要参数),它将自动检测当前类中是否存在自定义__init__(以及所有其他__方法)并且不会覆盖它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python:类中的 __init__

来自分类Dev

Python类__init__确认

来自分类Dev

python类的__init__方法

来自分类Dev

类作为python __init__中的参数

来自分类Dev

python类的属性不在__init__中

来自分类Dev

在 Python 中的 __init__() 中添加方法

来自分类Dev

在Python中从__init__调用setter

来自分类Dev

Python中的__init__自动运行方法

来自分类Dev

在Python中从__init__调用setter

来自分类Dev

为什么__init__在python中失败

来自分类Dev

python中带有__init__的对象

来自分类Dev

在某些类的python中的__init__ def中获取变量

来自分类Dev

在Python 3中扩展类并使用__init__构造它

来自分类Dev

杀死在Python的__init__类中创建的子进程

来自分类Dev

Python:将参数冻结到类__init__函数中

来自分类Dev

Python中的类是否需要__init__构造函数?

来自分类Dev

杀死在Python的__init__类中创建的子进程

来自分类Dev

Python中的类是否需要__init__构造函数?

来自分类Dev

我如何使用__。init__并为python做OOP

来自分类Dev

Python重载__init__

来自分类Dev

如何在 Python 中的 def __init__ 中检索变量

来自分类Dev

如何处理python __init__中缺少的参数?

来自分类Dev

如何使任何方法在Python中充当__init__?

来自分类Dev

如何处理python __init__中缺少的args?

来自分类Dev

带有 __init__ 函数的 Python 类多重继承

来自分类Dev

Python:父类无法识别其子类的 __init__

来自分类Dev

你能帮我python __init__吗

来自分类Dev

你能用python __init__帮助我吗

来自分类Dev

如何在Python中使用__init__方法?