言いたいこと
Pythonのクラスの作り方はわかりづらい。
クラス変数とインスタンス変数、普通の関数内変数がどのように扱われるかがわからない!
ということで、以下のようなテストコードを書いてみた。
基本的には、以下の理解でよいみたい
- selfをつけるとインスタンス変数
- classの直下で宣言された変数はクラス変数
- 各メソッド内で宣言された変数は関数内変数
コード
-*- coding: utf-8 -*- class Hoge(): hoge = "私はクラス変数としてのhoge" #これはクラス変数として扱われる def __init__(self): self.hoge = "私はインスタンス変数としてのほげ" # selfをつけるとインスタンス変数 hoge = "私はinit関数内としてのほげ" # これはinit関数内限定の変数 def test(self): hoge = "私はインスタンスメソッドの中のほげ" # test内関数の変数 print(hoge) # -> 私はインスタンスメソッドの中のほげ print(self.hoge) # -> 私はインスタンス変数としてのほげ @classmethod def test_cls_hoge(cls): print(cls.hoge) # -> 私はクラス変数としてのhoge def main(): hoge = Hoge() hoge.test() Hoge.test_cls_hoge() if __name__ == '__main__': main()