[解決済み] Python初級編。AttributeError: 'list' オブジェクトは属性を持ちません。
2022-03-04 21:38:10
質問
というエラーが出ています。
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)
出力します。
33.0 20.0
違いは、あなたの
bikes
ディクショナリでは、リストとして値を初期化しています。
[...]
. 代わりに、あなたのコードの残りの部分が望んでいるように見えます。
Bike
インスタンスを作成します。 そこで
Bike
インスタンスを作成します。
Bike(...)
.
エラーについて
AttributeError: 'list' object has no attribute 'cost'
を呼び出そうとしたときに発生します。
.cost
の上で
list
オブジェクトを作成します。 とても簡単ですが、何が起こったかは、あなたが
.cost
-- この行の中で
profit = bike.cost * margin
これは、少なくとも1つの
bike
(のメンバー)。
bikes.values()
はリストです)。 を定義したところを見てみると
bikes
を見ると、その値は実際にはリストであることがわかります。 ですから、このエラーは理にかなっています。
しかし
あなたのクラス
にはcost属性があるので、それを使おうとしているように見えました。
Bike
のインスタンスを値として使用できるように、ちょっとした変更を加えました。
[...] -> Bike(...)
で完了です。
関連
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み] Pythonでオブジェクトが属性を持つかどうかを知る方法
-
[解決済み] Pythonのクラスはなぜオブジェクトを継承するのですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] Pythonでnullオブジェクトを参照する
-
[解決済み] リストを反転させるには?
-
[解決済み] オブジェクトの属性に基づいてオブジェクトのリストを並べ替えるには?
-
[解決済み] エラーです。" 'dict' オブジェクトには 'iteritems' という属性がありません "
-
[解決済み] AttributeError: 'NoneType' オブジェクトには 'something' という属性がありません」と表示されるのはなぜですか?
-
[解決済み】Pythonで辞書のキーをリストとして返すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
ピロウズ画像色処理の具体的な活用方法
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
python implement mysql add delete check change サンプルコード
-
PythonによるExcelファイルの一括操作の説明
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。