Skip to main content

A library with a base class that stores the assigned name of an object.

Project description

objname

A library with a base class that stores the assigned name of an object.

>>> import objname
>>> x, y = objname.AutoName()
>>> x.name
'x'
>>> y.name
'y'

Official documentation at readthedocs: https://objname.readthedocs.io/en/latest/

Table Of Contents

Requirements

objname requires Python 3.6 or newer. It has no third-party dependencies and works on both POSIX and Windows. It runs in cPython and PyPy.

Installation

To install it just use pip:

$ pip install objname

You can also install it from github:

$ pip install git+https://github.com/AlanCristhian/objname.git

Tutorial

objname has only one class: AutoName. It creates an object with the objname attribute that stores the name of such object. E.g:

>>> import objname
>>> a = objname.AutoName()
>>> a.name
'a'

It can make multiple variables with iterable unpacking syntax.

>>> import objname
>>> x, y = objname.AutoName()
>>> x.name
'x'
>>> y.name
'y'

You can make your own subclass that inherit from objname.AutoName.

>>> import objname
>>> class Number(objname.AutoName):
...     def __init__(self, value):
...         super().__init__()
...         self.value = value
...
>>> a = Number(1)
>>> a.name
'a'
>>> a.value
1

Observations

How it works

AutoName searches the name of the object in the bytecode of the frame where the object was created. If it can't find a name, then the default '<nameless>' value are set.

Multiple assignment syntax

AutoName stores the last name in the expression.

>>> import objname
>>> a = b = objname.AutoName()
>>> a.name
'b'
>>> b.name
'b'

That is the same behaviour of __set_name__ method.

>>> class SetName:
...     def __set_name__(self, owner, name):
...         self.name = name
...
>>> class MyClass:
...     a = b = SetName()
...
>>> MyClass.a.name
'b'
>>> MyClass.b.name
'b'

API reference

class AutoName()

Stores the assigned name of an object in the name attribute.

Single assignment:

>>> obj = AutoName()
>>> obj.name
'obj'

Iterable unpacking syntax:

>>> a, b = AutoName()
>>> a.name
'a'
>>> b.name
'b'

Contribute

Donation

Buy Me a Coffee 🙂: https://www.paypal.com/donate?hosted_button_id=KFJYZEVQVRQDE

License

The project is licensed under the MIT license.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

objname-0.12.1-py3-none-any.whl (10.3 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