Skip to main content

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 __ and protected_ 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


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)

Uploaded Source

Built Distribution

PyPrivate-0.3-py3-none-any.whl (4.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page