暇つぶし2chat TECH - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト978:デフォルトの名無しさん 19/03/17 18:00:19.80 oeP02mQD.net >>938 こういう簡単なクラスで考えてみる class MyClass: def __init__(self, name): self.name = name def getname(self): return self.name コンストラクタで名前を受け取って、自身のnameプロパティにセットする getnameメソッドでは自身の名前を返す簡単なクラス このクラスの使い方は以下 a = MyClass("John") a.getname() // 出力 'John' ただしこういう風にも書ける a = MyClass("John") MyClass.getname(a) // 出力 'John' Pythonのインスタンスメソッドは単なる関数もしくはスタティックメソッドみたいなものだということがわかる a.getname() は暗黙的に MyClass.getname(a) に置き換えられてると考えてもいい 979:デフォルトの名無しさん 19/03/17 18:01:31.22 oeP02mQD.net >>938 さらにselfというものがわかりやすいようにこのクラスを普通の関数と辞書型で再現してみる def MyClass(name): self = {} __init__(self, name) return self def __init__(self, name): self["name"] = name def getname(self): return self["name"] a = MyClass("John") getname(a) // 出力 'John' これでだいたい再現できる 何が言いたいかというとMyClass()という関数が空のインスタンス(ここでは辞書だが)を作成して__init__に引数として渡している たぶんPythonのクラスでも暗黙的にMyClass()という関数が生成されて間接的に__init__を呼び出している つまりself(=MyClassのインスタンス)というのは暗黙的に作られたMyClass()関数内で作られているオブジェクトだと考えればいい Pythonほとんどやったことないから想像で適当に言ってるだけだけどな 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch