close

[Solved] Beginner Python: Attribute: ‘list’ object has no attribute

Hello Guys, How are you all? Hope You all Are Fine. Today I get the following error Beginner Python: Attribute: ‘list’ object has no attribute in python. So Here I am Explain to you all the possible solutions here.

Without wasting your time, Let’s start This Article to Solve This Error.

How Beginner Python: Attribute: ‘list’ object has no attribute Error Occurs?

Today I get the following error Beginner Python: Attribute: ‘list’ object has no attribute in python.

How To Solve Beginner Python: Attribute: ‘list’ object has no attribute Error ?

  1. How To Solve Beginner Python: Attribute: 'list' object has no attribute Error ?

    To Solve Beginner Python: Attribute: 'list' object has no attribute Error You need to pass the values of the dict into the Bike constructor before using like that. Or, see the namedtuple — seems more in line with what you're trying to do.

  2. Beginner Python: Attribute: 'list' object has no attribute

    To Solve Beginner Python: Attribute: 'list' object has no attribute Error You need to pass the values of the dict into the Bike constructor before using like that. Or, see the namedtuple — seems more in line with what you're trying to do.

Solution 1

Consider:

class Bike(object):
    def __init__(self, name, weight, cost):
        self.name = name
        self.weight = weight
        self.cost = cost

bikes = {
    # Bike designed for children"
    "Trike": Bike("Trike", 20, 100),      # <--
    # Bike designed for everyone"
    "Kruzer": Bike("Kruzer", 50, 165),    # <--
    }

# Markup of 20% on all sales
margin = .2
# Revenue minus cost after sale
for bike in bikes.values():
    profit = bike.cost * margin
    print(profit)

Output:

33.0
20.0

The difference is that in your bikes dictionary, you’re initializing the values as lists [...]. Instead, it looks like the rest of your code wants Bike instances. So create Bike instances: Bike(...).

As for your error

AttributeError: 'list' object has no attribute 'cost'

this will occur when you try to call .cost on a list object. Pretty straightforward, but we can figure out what happened by looking at where you call .cost — in this line:

profit = bike.cost * margin

This indicates that at least one bike (that is, a member of bikes.values() is a list). If you look at where you defined bikes you can see that the values were, in fact, lists. So this error makes sense.

But since your class has a cost attribute, it looked like you were trying to use Bike instances as values, so I made that little change:

[...] -> Bike(...)

and you’re all set.

Solution 2

You need to pass the values of the dict into the Bike constructor before using like that. Or, see the namedtuple — seems more in line with what you’re trying to do.

Summery

It’s all About this issue. Hope all solution helped you a lot. Comment below Your thoughts and your queries. Also, Comment below which solution worked for you? Thank You.

Also, Read