Can I have a class with property named "from"

DL Neil PythonList at DancesWithMice.info
Sat Jun 6 02:29:47 EDT 2020


On 6/06/20 9:36 AM, zljubisic at gmail.com wrote:
> Hi,
> 
> if I define class like this one:
> 
> class abc:
> 
>      def __init__(self):
>          self._from = None
> 
>      @property
>      def from(self):
>          return self._from
> 
>      @from.setter
>      def from(self, value):
>          self._from = value
> 
> 
> I get the error SyntaxError: invalid syntax because of the property named from.
> Looks like in python from is a keyword that cannot be used as a property name.
> 
> I have to create a python object from a complex (nested) json object that has many keys with name "from" and value of date in string format.
> 
> As I would like to keep property names as they are in the json file... is there a workaround?


The from moduleNM import object/can't use a keyword issue has been 
discussed.

When a JSON object is load-ed into a Python program, its native form is 
a dict. Thus, "from" will be one of the dict's keys, cf a Python 
identifier.

Why have you chosen to go to the trouble of creating a separate 
data-attribute (with the from/_from/from_ name)? (I realise the above 
class is likely 'cut-down' to suit publication) Does the answer include 
terms such as 'understanding', 'control', 'easier to use', 'better 
suited to existing code'?

Assuming a good reason (why wouldn't we?), then it is necessary for the 
Python object to include (or be able to access) 'serialise' and/or 
'deserialise' routines - because Python objects will not do this, in and 
of themselves. This is the opportunity to rename the value between its 
JSON version and its internal (code) use.

If there are <<many keys..."from">> then they can't all be called "from" 
anyway. Plus, a term such as "from", likely fails to convey its full 
meaning, eg a student might be enrolled_since, or "zljubisic" has been 
paid an higher salary rate_from. As such, 'expanding' its name would 
likely improve readability, comprehension, and thus code-quality!
(I'm with the "ick" when it comes to 'artificial' name-mangling)
-- 
Regards =dn


More information about the Python-list mailing list