【问题标题】:puffadder (Lombok's alternative for Python) not maintained?puffadder(Lombok 的 Python 替代品)没有维护?
【发布时间】:2019-10-07 10:29:22
【问题描述】:

我正在寻找一些类似于 Java 的 Lombok 的 Python 库。 我从 2016 年找到了 puffadder 0.1,但现在我尝试使用 pip 安装它,它不起作用。

链接:

外壳输出:

$ pip3 install puffadder
Collecting puffadder
  Could not find a version that satisfies the requirement puffadder (from versions: )
No matching distribution found for puffadder

$ pip --version
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip3 --version
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)

$ pip3 install puffadder==0.1
Collecting puffadder==0.1
  Could not find a version that satisfies the requirement puffadder==0.1 (from versions: )
No matching distribution found for puffadder==0.1

$ pip install puffadder==0.1
Collecting puffadder==0.1
  Could not find a version that satisfies the requirement puffadder==0.1 (from versions: )
No matching distribution found for puffadder==0.1

$ sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.3 LTS
Release:    18.04
Codename:   bionic

那么,它不再与现代版本的 Python 兼容了吗? 为什么不再在 pip 中,它是否已停止使用,或者只是缺少在 pip 中的集成(所以,我可以从 GitHub 克隆它)。

另外,除了使用 @property 之外,有人知道一些受支持的替代方案吗?

【问题讨论】:

    标签: python lombok boilerplate


    【解决方案1】:

    Python 3.7 添加了dataclasses 这让我想起了 Java 中的龙目岛。它会生成 _init_、_repr_ 等等。

    @dataclass()
    class Name:
        first_name: str
        last_name: str
    
    yoni = Name("Yoni", "Alaluf")
    yoni2 = Name("Jony", "Alaluf")
    print(yoni) # Name(first_name='Yoni', last_name='Alaluf')
    print(yoni2) # Name(first_name='Jony', last_name='Alaluf')
    print(yoni == yoni2) # False
    
    

    【讨论】:

    • 但是,Lombok 的其他功能如 NotNull 等呢?
    • 显然@dukelover,这不包括所有 Lombok 功能,但如果您不提供其中一个属性,您将收到错误消息,例如,如果您尝试创建 Name('Yoni'),您将收到一个初始化错误n = Name('yoni') TypeError: __init__() missing 1 required positional argument: 'last_name' 有几个调整可以用于field method
    • 请注意读者,您可能对 Paprika 项目(受 lombok 启发)感兴趣。访问项目:pythonrepo.com/repo/rayanht-paprika
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多