반응형
오류 내용 :
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
반응형
'파이썬' 카테고리의 다른 글
파이썬 대용량 CSV 파일을 부분적으로 어떻게 읽을 수 있습니까? (0) | 2020.11.26 |
---|---|
파이썬 현재 모듈에서 setattr ()을 어떻게 호출합니까? (0) | 2020.11.26 |
파이썬 matlibplot에서 x 축과 y 축의 범위를 변경하는 방법은 무엇입니까? (0) | 2020.11.26 |
파이썬 Windows에서 아나콘다를 완전히 제거하는 방법은 무엇입니까? (0) | 2020.11.26 |
파이썬 Python에서 MIDI 파일 읽기 (0) | 2020.11.26 |
댓글