自动初始化实例属性的Python装饰器

autoinit的Python项目详细描述


自动初始化

Python decorator for automatic initialization instance attributes

什么

fromautoinitimportautoinit@autoinitclassX:def__init__(self,a,b,c,d:int,e=99.99,f='some_default_value'):print("__init__ do some another things")x=X(42,100,500,None)#  Output: "__init__ do some another things"print(x.__dict__)# Output: {'a': 42, 'b': 100, 'c': 500, 'd': None, 'e': 99.99, 'f': 'some_default_value'}

如何

$pip install autoinit

其中

测试地点:

  • CPython:2.7,3.5-3.8
  • Pypy:2.7、3.5、3.6
  • 杰森:2.7

…但很有可能与其他实现一起工作。在

为什么

__init__内的许多基本作业是一个相当频繁且相当枯燥的案例。在

^{pr2}$

数据类并没有让它更有趣,主要是因为您仍然不能在一行中声明属性

@dataclassclassFiveDimensionRecord:x:inty:intz:intu:intv:intdt:'typing.Any'=Nonedescription:str=''def__post_init__(self):self.dt=self.dtordatetime.now()

使用autoinit它看起来更加紧凑和简约

classFiveDimensionRecord:@autoinitdef__init__(self,x:int,y:int,z:int,u:int,v:int,dt=None,description:str=''):self.dt=self.dtordatetime.now()

选项

  • @autoinit(exclude='attr')@autoinit(exclude=['attr1', 'attr2]'):跳过指定的属性

  • @autoinit(no_warn=True):如果decorator应用于非__init__方法,则不要抛出警告

  • @autoinit(reverse=True):颠倒操作顺序-首先调用包装好的方法(通常是__init__),然后执行赋值

decorator本身可以同样地应用于__init__方法和整个类。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java生成随机浮点,包括两个边界   java三层体系结构风格是如何工作的?一些简单的例子   多线程可以使用线程。在Java中,在循环中使用sleep(),以便定期执行某些操作?   读取循环上的java HibernateMysql异常   java使用带有Apache Ivy的自定义存储库,未找到解析程序   filenotfoundexception在读取时出现问题。Java中的txt文件   嵌入式tomcat 8.0.21中的java Spring websocket   java为什么我需要创建一个类的引用,然后创建一个B类的对象   java Splashscreen动画在Mac OS中更新时闪烁   JavaSpring3。名为“zoneManagerDelegate”的x Bean必须是[com.ms.adsp.delegate.sapi.zoneManagerDelegate]类型,但实际上是[$Proxy20]类型   java SQLite:没有这样的专栏;不明错误   java将JTable定位到JFrame中JPanel中的(x,y)位置   java在导入组织方面面临挑战。知道。xchart*   xml读取Java中的SVG元素并跳过某些包含文本的元素   java Spring Redis问题:Redis缓存中的GetAllCacheNames不能与RedisCacheManager一起使用   java Vertex Hazelcast:集群问题   java如何编辑osgi托管服务实现使用的属性文件?   java Android活动并行启动?   java AWS Lambda用于将excel转储到数据库中