Add property to object python
I want to create a dynamic object (inside another object) in Python and then add attributes to it. Show I tried:
but this didn't work. Any ideas? edit: I am setting the attributes from a
In the above example
I would get I used the How would I set the attribute based on the value of For details on why it doesn't work, see Can't set attributes on instance of "object" class.
asked May 13, 2010 at 14:34
4
The built-in I generally just do this:
When I can, I give the Some people do a different thing, where they use a sub-class of Edit: For the addition to your question, using
answered May 13, 2010 at 14:41
FogleBirdFogleBird 71.5k25 gold badges121 silver badges131 bronze badges 7 You could use my ancient Bunch recipe, but if you don't want to make a "bunch class", a very simple one already exists in Python -- all functions can have arbitrary attributes (including lambda functions). So, the following works:
Whether the loss of clarity compared to the venerable answered May 13, 2010 at 14:49
Alex MartelliAlex Martelli 823k163 gold badges1202 silver badges1379 bronze badges 14 The
answered Feb 9, 2017 at 15:47
DunatotatosDunatotatos 1,60614 silver badges24 bronze badges 3 You can also use a class object directly; it creates a namespace:
answered Jan 5, 2018 at 23:44
ErnestoErnesto 9008 silver badges12 bronze badges 3 There are a few ways to reach this goal. Basically you need an object which is extendable.
mbarkhau 7,9404 gold badges29 silver badges34 bronze badges
answered May 13, 2010 at 14:48
evilpieevilpie 2,62019 silver badges21 bronze badges 1 Now you can do (not sure if it's the same answer as evilpie):
answered Sep 13, 2013 at 0:32
andreabediniandreabedini 1,2751 gold badge12 silver badges20 bronze badges 1 Try the code below:
answered Jul 23, 2015 at 20:49
neldorneldor 2312 silver badges2 bronze badges 4 as docs say:
You could just use dummy-class instance. answered May 13, 2010 at 14:43
SilentGhostSilentGhost 293k64 gold badges301 silver badges291 bronze badges These solutions are very helpful during testing. Building on everyone else's answers I do this in Python 2.7.9 (without staticmethod I get a TypeError (unbound method...):
answered Aug 27, 2015 at 20:34
Robpol86Robpol86 1,54520 silver badges16 bronze badges If we can determine and aggregate all the attributes and values together before creating the nested object, then we could create a new class that takes a dictionary argument on creation.
We can also allow keyword arguments. See this post.
answered Nov 19, 2018 at 21:59
HarlemSquirrelHarlemSquirrel 7,6264 gold badges32 silver badges33 bronze badges Which objects are you using? Just tried that with a sample class and it worked fine:
And I got The only situation where I see this failing is if you're trying a Update: From the comment this is a repetition of: Why can't you add attributes to object in python?
answered May 13, 2010 at 14:52
jnevesjneves 1,0147 silver badges7 bronze badges 1 I think the easiest way is through the collections module.
answered Aug 21, 2020 at 15:58
PjlPjl 1,74418 silver badges21 bronze badges Coming to this late in the day but here is my pennyworth with an object that just happens to hold some useful paths in an app but you can adapt it for anything where you want a sorta dict of information that you can access with getattr and dot notation (which is what I think this question is really about):
This is cool because now:
So this uses the function object like the above answers but uses the function to get the values (you can still use answered Mar 2, 2016 at 2:17
Paul WhippPaul Whipp 15.3k4 gold badges40 silver badges52 bronze badges if you are looking for chain assignment, to do things such as django model template abstract attribute assigning:
which allows you to pass model as a answered Apr 25 at 12:50
WeiloryWeilory 2,01811 silver badges25 bronze badges This works just fine:
If you want to set the attribute to some value, do this:
For the value to be a string you will have to use these \" instead of quotation marks unless you have the value stored in a variable. answered Jul 6 at 17:04
answered Dec 27, 2013 at 19:41
lmoktolmokto 1319 bronze badges Other way i see, this way:
leota 1,5582 gold badges12 silver badges33 bronze badges answered May 13, 2016 at 17:22
2 How do you add a new property to an object in Python?Python provides a function setattr() that can easily set the new attribute of an object. This function can even replace the value of the attribute. It is a function with the help of which we can assign the value of attributes of the object.
How do you add values to an object in Python?To add a single element to a list in Python at the end, you can simply use the append() method. It accepts one object and adds that object to the end of the list on which it is called.
How do you add an attribute to an object?On the List tab, select the object to which you want to add an attribute. On the Attributes tab, click New Row. In the Attribute field, specify a value.
How would you add a property to an object class?You can add a property to a previously defined object type by using the prototype property. This defines a property that is shared by all objects of the specified type, rather than by just one instance of the object.
|