You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.4 KiB
Markdown

# PyTraits
## Introduction
PyTraits is a Python library that provides functionality similar to Rust traits. It allows you to define protocols using `impl` or `trait` annotations to specify the behavior that classes should implement.
## Installation
You can install PyTraits using pip:
```bash
pip install pytraits
```
## Usage
使用 PyTraits首先需要使用 `trait` 注解定义一个协议:
```python
from typing import runtime_checkable
@runtime_checkable
class Printable:
def print(self):
pass
```
然后,可以使用`impl`或`trait`装饰器为已定义的类实现该协议:
```python
from pytraits import impl, trait
class MyClass1: pass
@impl(Printable)
class MyClassImplPrintable(MyClass1):
def print(self):
print("从 MyClass 打印")
class MyClass2: pass
@trait
class MyClassTraitPrintable(MyClass2, Printable):
def print(self):
print("从 MyClass2 打印")
mc1: MyClass1 | Printable = MyClass1()
mc2: MyClass2 | Printable = MyClass2()
mc1.print()
mc2.print()
```
现在,`MyClass` 实现了 `Printable` 协议,可以相应地使用。
## Contributing
Contributions are welcome! If you find any issues or have suggestions for improvement, please open an issue or submit a pull request on GitHub.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.