Add private/protected/public fields to Python
Project description
Python private
This package is adding private/protected/public fields to Python.
Without PyPrivate:
class Foo():
__x = 7 # Private "x"
def baz(self):
self.__x += 7
def bar(f, n):
try:
getattr(f, n)
except:
print('"' + n + '" not found')
else:
print('"' + n + '" found')
myfoo = Foo()
myfoo.baz()
bar(myfoo, "__x") # "__x" not found
bar(myfoo, "_Foo__x") # "_Foo__x" found
With PyPrivate:
from privatefields import privatefields
@privatefields
class Foo():
private_x = 7 # Private "x"
def baz(self):
self.private_x += 7
def bar(f, n):
try:
getattr(f, n)
except:
print('"' + n + '" not found')
else:
print('"' + n + '" found')
myfoo = Foo()
myfoo.baz()
bar(myfoo, "private_x") # "private_x" not found
print(dir(myfoo)) # no "x"
How to use
PyPrivate is easy to use. To use private/protected fields import "privatefields":
from privatefields import privatefields
Next, use it with your classes:
@privatefields
class Foo():
pass
And add prefixes private_/protected_ to your variables/methods names:
self.z # Public
self.protected_y # Protected
self.private_x # Private
Friends
You can declare "friend" classes/functions. For this add this line to your class:
class Baz(): # This class can use "x"
pass
class Bar(): # This class can't use "x"
pass
@privatefields
class Foo():
friends = [Baz]
private_x = "Secret data" # Private "x"
What's new
0.2
- Added support for removing attributes (delattr).
- Replaced error message from "(name) object has no attribute (attribute)" to "attribute (attribute) is private/protected"
- Bugs fixed
0.3
- Added suppression of replacing
__attribute
with_Class__attribute
- Added flag pythonStyle. This flag replaces
private_
with__
andprotected_
with_
- Bugs fixed
0.4
- A global improvement will be added. There will no longer be a need to use the
@privatefields
decorator. All classes will automatically have a private/protected fields system.
Planned before 0.9
- Added updated system (beta). Use flag updatedSystem to enable new system.
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
PyPrivate-0.3.tar.gz
(4.6 kB
view hashes)