Metadata-Version: 2.4
Name: private_attribute
Version: 1.0.6
Summary: Private attribute decorator for Python classes
Project-URL: homepage, https://github.com/Locked-chess-official/private-attribute
Author-email: Locked-chess-official <13140752715@163.com>
License: MIT
Description-Content-Type: text/markdown

# Private Attribute

## Introduction

This package provide a way to create the private attribute like "C++" does.

## Usage

This is a simple usage about the module:

```python
from private_attribute import PrivateAttrBase

class MyClass(PrivateAttrBase):
    __private_attrs__ = ['a', 'b', 'c']
    def __init__(self):
        self.a = 1
        self.b = 2
        self.c = 3

    def public_way(self):
        print(self.a, self.b, self.c)

obj = MyClass()
obj.public_way()  # (1, 2, 3)

print(hasattr(obj, 'a'))  # False
print(hasattr(obj, 'b'))  # False
print(hasattr(obj, 'c'))  # False
```

## Notes

- All of the private attributes class must contain the `__private_attrs__` attribute.
- The `__private_attrs__` attribute must be a sequence of strings.
- You cannot define the name which in `__slots__` to `__private_attrs__`.
- When you define `__slots__` and `__private_attrs__` in one class, the attributes in `__private_attrs__` can also be defined in the methods, even though they are not in `__slots__`.

## License

MIT
