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

Uploaded Python 3

File details

Details for the file objname-0.12.1-py3-none-any.whl.

File metadata

  • Download URL: objname-0.12.1-py3-none-any.whl
  • Upload date:
  • Size: 10.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0rc1

File hashes

Hashes for objname-0.12.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d565cbce91c048021f9328c33e6d6ddd266edafe6ddfabaea1e746a103af30a9
MD5 98b1d466d0d6c66f28af67eba00b2ba9
BLAKE2b-256 4b05fb5cc77d669f9b28b1ec5d930f64c5576b4d9d9e436e30ba1d12b8838615

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