Skip to main content

Mutable Object Declaration - 支持声明与实现分离的类定义库

Project description

mutobj

Python 3.11+ License: MIT

mutobj (Mutable Object Declaration) - 支持声明与实现分离的 Python 类定义库。

特性

  • 声明与实现分离 - 类似 C/C++ 头文件模式
  • Extension 机制 - 为类添加私有状态而不污染接口
  • IDE 友好 - 完整支持 mypy/pyright 和 IDE 跳转
  • 继承支持 - 完整的类继承和方法覆盖
  • 零依赖 - 纯 Python 实现,无外部依赖

安装

pip install mutobj

快速开始

声明文件 (user.py)

import mutobj

class User(mutobj.Declaration):
    name: str
    age: int

    def greet(self) -> str:
        """返回问候语"""
        ...

实现文件 (user_impl.py)

import mutobj
from .user import User

@mutobj.impl(User.greet)
def greet(self: User) -> str:
    return f"Hello, I'm {self.name}!"

使用

from user import User
import user_impl  # 导入以注册实现

user = User(name="Alice", age=25)
print(user.greet())  # "Hello, I'm Alice!"

Extension 机制

为类添加私有状态:

class UserExt(mutobj.Extension[User]):
    _login_count: int = 0

    def __extension_init__(self):
        self._login_count = 0

@mutobj.impl(User.greet)
def greet(self: User) -> str:
    ext = UserExt.of(self)
    ext._login_count += 1
    return f"Hello, {self.name}! (login #{ext._login_count})"

支持的功能

功能 状态
属性声明
方法声明与实现
Property
classmethod
staticmethod
继承
Extension
类型检查

文档

开发

# 安装开发依赖
pip install -e ".[dev]"

# 运行测试
pytest

# 类型检查
mypy src/mutobj

发布

Tag 触发自动发布(PyPI Trusted Publishers,无需 token):

git tag v0.2.x
git push origin v0.2.x

源码版本保持 x.y.999,CI 从 tag 提取正式版本号替换后构建发布。

License

MIT License - 详见 LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mutobj-0.7.0.tar.gz (37.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mutobj-0.7.0-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

Details for the file mutobj-0.7.0.tar.gz.

File metadata

  • Download URL: mutobj-0.7.0.tar.gz
  • Upload date:
  • Size: 37.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mutobj-0.7.0.tar.gz
Algorithm Hash digest
SHA256 3d601f14e4c52e7914cf70cda06f20e6bf968de42143c94852a02f10253f3d69
MD5 f2f400453579de6116d021a6e0d38b54
BLAKE2b-256 4aeab7aedd8f8da7532d563261b5db4d5f80b85e7ac087d93b9596e0d497bcca

See more details on using hashes here.

Provenance

The following attestation bundles were made for mutobj-0.7.0.tar.gz:

Publisher: release.yml on tiwb/mutobj

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mutobj-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: mutobj-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 15.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mutobj-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f9d19cc34adcdb0097069f406b13914c8ce2abfeb38d2db60e4aac78b8ec5b07
MD5 02de02d356e6515d4c8473c5f72a347e
BLAKE2b-256 86aa9352bf1824dda47e889ffe8b2618c54dfea79f1f24ec1ddfd28268ba7925

See more details on using hashes here.

Provenance

The following attestation bundles were made for mutobj-0.7.0-py3-none-any.whl:

Publisher: release.yml on tiwb/mutobj

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page