Skip to main content

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.

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.

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.

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.

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.

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.

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


Download files

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

Source Distribution

pyaccessmodifier-0.1.0.tar.gz (3.2 kB view details)

Uploaded Source

Built Distribution

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

pyaccessmodifier-0.1.0-py3-none-any.whl (3.7 kB view details)

Uploaded Python 3

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

Hashes for pyaccessmodifier-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f11b58bbfa65f960c4e73f26021985606153179d16b5fd8246b8a091b7e77762
MD5 874416f5e237753aac32f631d59cfdb7
BLAKE2b-256 c0db54a7e2f022994a3d7015020ed4e21a0fd6ee0f53f4a0a1e95dbe02881355

See more details on using hashes here.

File details

Details for the file pyaccessmodifier-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pyaccessmodifier-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 821750f890a9d28c3958377dadc818c2c45d1cd72c6cfa37a3af1c728c560bc8
MD5 ff972a82a3d29ec6483f3a0a5944adce
BLAKE2b-256 2c6743a101cf2dc9df5e3595870b56e3293a6c290122463a3e61f3ec35381a21

See more details on using hashes here.

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