본문 바로가기
파이썬

파이썬 초보자 Python : AttributeError : 'list'개체에 속성이 없습니다.

by º기록 2020. 11. 26.
반응형

오류 내용 :

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

자전거 사전을 처리하기 위해 다음 클래스를 사용하여 간단한 이익 계산을 시도하고 있습니다.

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

bikes = {
    # Bike designed for children"
    "Trike": ["Trike", 20, 100],
    # Bike designed for everyone"
    "Kruzer": ["Kruzer", 50, 165]
    }

for 문으로 수익을 계산하려고하면 속성 오류가 발생합니다.

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

첫째, 목록을 참조하는 이유를 모르겠고 모든 것이 정의 된 것 같습니다.

 

해결 방법

 

치다:

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)

산출:

차이점은 bikes 사전에서 값을 [...] 목록으로 초기화한다는 것입니다. 대신 나머지 코드에서 Bike 인스턴스를 원하는 것 같습니다. 따라서 Bike 인스턴스를 만듭니다 : Bike (...) .

당신의 오류에 관해서

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

이것은 list 객체에서 .cost 를 호출하려고 할 때 발생합니다. 매우 간단하지만 다음 줄에서 .cost 를 호출하는 위치를 살펴보면 무슨 일이 일어 났는지 알 수 있습니다.

profit = bike.cost * margin

이는 하나 이상의 bike (즉, bikes.values ​​() 의 구성원이 목록 임)를 나타냅니다. 자전거 를 정의한 위치를 보면 값이 실제로 목록임을 알 수 있습니다. 따라서이 오류는 의미가 있습니다.

하지만 귀하의 클래스 에는 비용 속성이 있으므로 Bike 인스턴스를 값으로 사용하려는 것처럼 보였으므로 약간 변경했습니다.

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

모든 설정이 완료되었습니다.

 

참조 페이지 https://stackoverflow.com/questions/29335423

 

 

반응형

댓글