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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

708閲覧

pythonのクラスメソッドからインスタンスメソッドへの書き換え

HamaSaku

総合スコア15

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/11/03 02:05

編集2018/11/03 02:16

前提・実現したいこと

pythonの初心者です。pythonでクラスメソッドで書かれたものをインスタンスメソッドに書き換えたいのですが、エラーが出てしまい実行できません。 元のクラスメソッドのやつは
class ClassSample:
class_var="hoge"
@classmethod
def class_method(cls):
print("%s"%(cls.class_var))

ClassSample.class_method()

発生している問題・エラーメッセージ

--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-72-401ddbec06d1> in <module>() ----> 1 ClassSample.class_1(self.cls()) NameError: name 'self' is not defined

該当のソースコード

class ClassSample: class_var='hoge' def class_1(self,cls): self.cls=cls print('%s'%(self.cls.class_var)) ClassSample.class_1()

試したこと

ClassSample.class_1()のところを色々いじってみたのですが駄目でした

補足情報(FW/ツールのバージョンなど)

使っているのはJupyterLabのnotebookです。

初心者なので根本的なところから間違っているかもしれません。

わかりにくい質問かもしれませんが、もしわかる方がいらっしゃればご回答をお願いします。

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

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

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

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

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

guest

回答2

0

python のクラスの基本を確認しなおすとよいです。
(単にコード変更例を真似するより、今後も類似の事で悩まずに済みます)

参考情報例

  • 【Python入門】クラス変数とクラスメソッド、スタティックメソッド

https://code-graffiti.com/class-variables-and-methods-in-python/

投稿2018/11/03 06:21

編集2018/11/03 06:23
katoy

総合スコア22324

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

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

HamaSaku

2018/11/03 06:23

ご回答ありがとうございます!参考にさせていただきます!
guest

0

ベストアンサー

Python

1class ClassSample: 2 class_var='hoge' 3 def class_1(self): # インスタンスメソッドは引数clsを取りません 4 print('%s' % (self.class_var)) # 参照するだけならself.で良いです 5 6ClassSample().class_1() # インスタンスメソッドを使う以上、インスタンス経由にしないといけないです

投稿2018/11/03 03:11

LouiS0616

総合スコア35658

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

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

HamaSaku

2018/11/03 03:17

解決しました。助かりました! ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問