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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file PyPrivate-0.3.tar.gz.

File metadata

  • Download URL: PyPrivate-0.3.tar.gz
  • Upload date:
  • Size: 4.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.1

File hashes

Hashes for PyPrivate-0.3.tar.gz
Algorithm Hash digest
SHA256 51b794cc91e3e361b5dfba605684178817b07e468dea9be718a59ba6d585a36a
MD5 5e6d05df6be682deb69bd364e9939db1
BLAKE2b-256 6b33f531d22c1260e6ef08b5030bea98a772fb988b9f92868642afee43b22261

See more details on using hashes here.

File details

Details for the file PyPrivate-0.3-py3-none-any.whl.

File metadata

  • Download URL: PyPrivate-0.3-py3-none-any.whl
  • Upload date:
  • Size: 4.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.1

File hashes

Hashes for PyPrivate-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 812a6e9e669374478a093b5168a9af3258178043196119daffcb91f8df7aa2c1
MD5 02590c52ef2f7768374f799f75d5da7d
BLAKE2b-256 e7b2ca014f5671099fd95343b524a2344fd6ddf6156e4e4efe02bec2573023a6

See more details on using hashes here.

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