Python Forum
AttributeError: 'dict' object has no attribute 'fees'
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
AttributeError: 'dict' object has no attribute 'fees'
#1
I do not understand how to allocate a python dictionary. I was hoping someone could point out my error. If this is not the right forum, please help me out and point me to the right one.

This is my code:

msg = {'fees': ['GMBk8YVHn2', 2, 'C4xbW4SR'] }
fees = getattr(msg, "fees")
Traceback (most recent call last): File "<input>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'fees'
What's wrong with msg data?

Thnx
Matt
Reply
#2
The format that you use is indeed a dictionary.
It contains one item whos'e key is 'fees', and who's value is a list containing three items.
so to get fees, you would use:
fees = msg['fees']
or to access individual list item (say 2nd one)
second = msg['fees'][1]
>>> msg = {'fees': ['GMBk8YVHn2', 2, 'C4xbW4SR'] }
>>> fees = msg['fees']
>>> fees
['GMBk8YVHn2', 2, 'C4xbW4SR']
>>> second = msg['fees'][1]
>>> second
2
>>>
You can programmatically add a new item to the dictionary like:
>>> msg['taxes'] = ['A', 'Sales', 'whatever']
>>> msg
{'fees': ['GMBk8YVHn2', 2, 'C4xbW4SR'], 'taxes': ['A', 'Sales', 'whatever']}
>>> msg['taxes'][1]
'Sales'
>>>
Reply
#3
Interesting: why does the getattrib request fail then? am I using it wrong?

fees = getattr(msg, "fees")
Thnx
Matt
Reply
#4
(Apr-19-2018, 09:04 PM)mattraffel Wrote: Interesting: why does the getattrib request fail then? am I using it wrong?
getattr retrieves objects' attributes values, not dictionary values. You can use
fees = msg.get("fees")
Reply
#5
Can you give me an example of how the data should be structured so that fees is an attribute?

Thnx
Matt
Reply
#6
(Apr-19-2018, 09:13 PM)mattraffel Wrote: Can you give me an example
class Foo:
    pass

foo = Foo()
foo.fees = ['GMBk8YVHn2', 2, 'C4xbW4SR']
print(getattr(foo, 'fees'))
Reply
#7
(Apr-19-2018, 09:18 PM)Gribouillis Wrote:
(Apr-19-2018, 09:13 PM)mattraffel Wrote: Can you give me an example
class Foo:
    pass

foo = Foo()
foo.fees = ['GMBk8YVHn2', 2, 'C4xbW4SR']
print(getattr(foo, 'fees'))

Thank you.

I also found a slightly different way. It produces the same results. I thought I would post it in case it helps someone else.

class Foo:
    pass

foo = Foo()
setattr(foo, "fees", ['GMBk8YVHn2', 2, 'C4xbW4SR'])
print(getattr(foo, 'fees'))
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  getpass.getpass() results in AttributeError: module 'os' has no attribute 'O_NOCTTY' EarthAndMoon 4 719 Oct-03-2023, 02:00 PM
Last Post: deanhystad
  AttributeError: '_tkinter.tkapp' object has no attribute 'username' Konstantin23 4 1,530 Aug-04-2023, 12:41 PM
Last Post: Konstantin23
  Python: Regex is not good for re.search (AttributeError: 'NoneType' object has no att Melcu54 9 1,385 Jun-28-2023, 11:13 AM
Last Post: Melcu54
  Parallel processing - AttributeError: Can't get attribute 'sktimekmeans' Mohana1983 1 704 Jun-22-2023, 02:33 AM
Last Post: woooee
  Python: AttributeError: 'PageObject' object has no attribute 'extract_images' Melcu54 2 3,665 Jun-18-2023, 07:47 PM
Last Post: Melcu54
  Object attribute behavior different in 2 scripts db042190 1 685 Jun-14-2023, 12:37 PM
Last Post: deanhystad
  cx_oracle Error - AttributeError: 'function' object has no attribute 'cursor' birajdarmm 1 2,214 Apr-15-2023, 05:17 PM
Last Post: deanhystad
  Pandas AttributeError: 'DataFrame' object has no attribute 'concat' Sameer33 5 5,300 Feb-17-2023, 06:01 PM
Last Post: Sameer33
  WebDriver' object has no attribute 'find_element_by_css_selector rickadams 3 5,780 Sep-19-2022, 06:11 PM
Last Post: Larz60+
  'dict_items' object has no attribute 'sort' Calli 6 4,352 Jul-29-2022, 09:19 PM
Last Post: Gribouillis

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020