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"

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.1.tar.gz (3.8 kB view hashes)

Uploaded Source

Built Distribution

PyPrivate-0.1-py3-none-any.whl (3.7 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