Python Kotlin Acess Modifier
Project description
Python Access Modifiers Library
This library provides access control mechanisms for Python classes, including Private, Protected, Internal, and Public variables and methods. Python does not enforce strict access modifiers like Java or C++, but this library uses descriptors and decorators to simulate them.
Variable Descriptors
1. Private
- Purpose: Restrict access to the variable only within the defining class.
- Example:
class MyClass:
my_private = Private(42)
- Behavior:
- Reading or writing from outside the class raises
PermissionError. - Only instances of the defining class can access the value.
- Reading or writing from outside the class raises
2. Protected
- Purpose: Allow access only from the defining class and its subclasses.
- Example:
class MyClass:
my_protected = Protected(10)
class Child(MyClass):
def access_protected(self):
print(self.my_protected)
- Behavior:
- Reading or writing from unrelated classes raises
PermissionError. - Subclasses can access and modify the value.
- Reading or writing from unrelated classes raises
3. Internal
- Purpose: Restrict access to code within the same folder/module.
- Example:
class MyClass:
my_internal = Internal(99)
- Behavior:
- Access from files outside the same folder raises
PermissionError. - Useful for module-level encapsulation.
- Access from files outside the same folder raises
4. Public
- Purpose: Standard public variable, no access restriction.
- Example:
class MyClass:
my_public = Public(123)
- Behavior:
- Can be accessed and modified freely from anywhere.
Function Decorators
1. @private
- Purpose: Restrict method access to the defining class only.
- Example:
class MyClass:
@private
def secret_method(self):
print("Private Method")
- Behavior:
- Calling from outside the class raises
PermissionError.
- Calling from outside the class raises
2. @protected
- Purpose: Allow method access from the defining class and subclasses.
- Example:
class MyClass:
@protected
def prot_method(self):
print("Protected Method")
- Behavior:
- Calling from unrelated classes raises
PermissionError.
- Calling from unrelated classes raises
3. @internal
- Purpose: Restrict method access to the same folder/module.
- Example:
class MyClass:
@internal
def internal_method(self):
print("Internal Method")
- Behavior:
- Calling from files in different folders raises
PermissionError.
- Calling from files in different folders raises
4. @public
- Purpose: Standard public method, no restriction.
- Example:
class MyClass:
@public
def pub_method(self):
print("Public Method")
- Behavior:
- Can be called from anywhere.
Example Usage
class MyClass:
my_private = Private(42)
my_protected = Protected(10)
my_internal = Internal(99)
my_public = Public(123)
@private
def secret_method(self):
print(self.my_private)
@protected
def prot_method(self):
print(self.my_protected)
@internal
def internal_method(self):
print(self.my_internal)
@public
def pub_method(self):
print(self.my_public)
class Child(MyClass):
def access_protected(self):
print(self.my_protected)
self.prot_method()
Notes:
- Python does not natively support strict access control.
- This library leverages descriptors for variables and decorators for methods.
- Use with caution, as it relies on call stack inspection (
inspect) and may not cover all edge cases.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyaccessmodifier-0.1.0.tar.gz.
File metadata
- Download URL: pyaccessmodifier-0.1.0.tar.gz
- Upload date:
- Size: 3.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f11b58bbfa65f960c4e73f26021985606153179d16b5fd8246b8a091b7e77762
|
|
| MD5 |
874416f5e237753aac32f631d59cfdb7
|
|
| BLAKE2b-256 |
c0db54a7e2f022994a3d7015020ed4e21a0fd6ee0f53f4a0a1e95dbe02881355
|
File details
Details for the file pyaccessmodifier-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pyaccessmodifier-0.1.0-py3-none-any.whl
- Upload date:
- Size: 3.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
821750f890a9d28c3958377dadc818c2c45d1cd72c6cfa37a3af1c728c560bc8
|
|
| MD5 |
ff972a82a3d29ec6483f3a0a5944adce
|
|
| BLAKE2b-256 |
2c6743a101cf2dc9df5e3595870b56e3293a6c290122463a3e61f3ec35381a21
|