質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1502閲覧

pythonでクラスメソッドの返却値をforでループすると『Non-iterable value』エラー発生

sincek422

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/02/20 09:29

編集2019/02/20 09:33

python初心者の投稿になります。
他サイトで調べたのですが自己解決できなかったため質問させて頂きました。
(VScode1.30、python3.7.2、pylintで開発しています)

以下のクラスを実装したところ、
『orders = self.getOrders』の箇所でpylintが『Non-iterable value orders is used in an iterating context [not-an-iterable]』
というエラーを出力しました。
変数ordersはgetOrdersメソッドでリストを返却しているのですが、この変数をforでループさせるにはどうしたら良いでしょうか?

class OrderTest: def __init__(self,dbHost,dbName,dbUser,dbPass): self.dbHost = dbHost self.dbName = dbName self.dbUser = dbUser self.dbPass = dbPass # メイン処理 def main(self): orders = self.getOrders for order in orders: self.updateOrder(order) # 注文情報を取得 def getOrders(self): sql = '''select order_no , shipping_status , shipping_no from order_info;''' conn = self.getConnection() cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor) results = cur.execute(sql).fetchall orders = [] for row in results: orders.append(dict(row)) cur.close() conn.close() return orders

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

それだとメソッドオブジェクトそのものがordersに代入されるだけなので、かっこをつけてメソッドをcallしてあげてください。pythonでは呼び出しのかっこを省略しても勝手に呼び出されたりはしません。

python

1 orders = self.getOrders()

ちなみにその書き方をした場合は、「クラスメソッド」ではなく、通常のインスタンスに属するメソッドです。

たぶんそれでいいのだと思いますが、本当に「クラスメソッド」にしたければ@classmethodデコレータを使ってください。

2. 組み込み関数 — Python 3.6.5 ドキュメント #classmethod

投稿2019/02/20 09:35

編集2019/02/20 09:38
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sincek422

2019/02/21 03:06

返信有難う御座いました。 self.getOrders()にすることでエラーがなくなりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問