数据类和python attrs的最小替代方案

SelfishClass的Python项目详细描述


Logo

自私类

selfishclass是数据类和流行的python attrs包的最小(~1kb)替代品。

selfishclass消除了在类的__init__方法中以self.varname形式分配变量的需要,并为类实例提供了一个简单的__repr__

为什么不是attrs?

attrs做的很多事情都很好。自私的人有几件事做得很好。我很少需要attr的所有功能。attrs的重量约为100kb。自私的人不到1kb。用伟大哲学家凯文马龙的话说,Me think, why waste time say lot word, when few word do trick.

为什么不使用数据类?

数据类需要Python3.7,这在某些环境中可能不是一个选项。数据类需要将__init__方法重新定义为__post_init__,这会让人觉得不直观,可能需要重写类。自私类只要求您插入装饰器。

安装

selfishclass已经在python 3.4.0和2.7.14上进行了测试,并且可能与大多数其他版本兼容。

使用pip install SelfishClass

通过pip安装

用法

SelfishClass提供了一个简单的类装饰器,它需要对现有的类定义进行最小或不更改。

from SelfishClass import selfish

@selfish
class Teacher(object):
    def __init__(self, name, id, department=None):
        pass

stan = Teacher('Stan', 445, department='Math')

print(stan)
>> Teacher: department<str>: Math, id<int>: 445, name<str>: Stan

所有变量都可以作为实例变量和局部变量在__init__中访问。例如,在__init__中,我们可以将name同时称为nameself.name

如果不希望将某些参数指定为实例变量,则可以指定忽略这些参数。这是通过使用decorator来完成的:

# All positional args will be ignored by selfish
@selfish(args=False)
class Teacher(object):
    def __init__(self, name, id, department=None):
        pass

# All kwargs will be ignored by selfish
@selfish(kwargs=False)
class Teacher(object):
    def __init__(self, name, id, department=None):
        pass

# Only id will be ignored by selfish
@selfish(ignore=['id'])
class Teacher(object):
    def __init__(self, name, id, department=None):
        pass

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

推荐PyPI第三方库


热门话题
java ListView仅在滚动时显示行   java从列表中获取输入的最佳方式?   java:将HTML转换为PDF无法处理<strong>和<em>whth itext   JSON转换为Java会产生错误   java如何在websphere(WAS)上向所有jaxws客户端请求添加HttpHeader?   java Android:AppCompatTextView自定义样式   java Logback在类路径中是否需要Groovy?使用logback。xml,而不是logback。配置用戈罗维   java有可能从坐标生成对JButton的引用吗?   java JProbe开源   Java中是否有C#风格的对象初始值设定项   jdbc Java SQL异常r.getString未从resultSet获取列   java Repaint()方法不调用draw()   java如果我是JPanel和JFrame的子类,为什么我的JFrame保持为空?   java在类中使用方法返回值和引用精确值本身之间的区别   java在选择新列表项时更改背景色   java双向一对多JPA组织。冬眠例外ConstraintViolationException   Java中的基本刽子手游戏(主要涉及字符串操作)