Python Python入門

Pythonのオブジェクト指向を理解する③~クラスの「メソッド」と「属性」とは何か?

この記事は約5分で読めます。

 

 

 

 

クラスの「メソッド」とは?

 

Pythonのクラスにおける「メソッド」とは、ある処理のまとまりに名前をつけたものの事で、ざっくりいうと、クラスが持っている関数のことです。

 

class A():
   def __init__(self):
      self.df=df

   def A_mean(self):←こいつがクラスメソッド!
      ~~~~~~~~~~
      ~~~~~~~~~~
      return 

 

 

例として,helloworldをプリントする簡単なクラスとクラスメソッドを作ってみます。

 

 

class Test(): 
   def helloworld(self): 
       print("Hello World!")

 

 

#インスタンスの呼び出し
example=Test()

#helloworldメソッドを呼び出す
example.helloworld()

 

 

するとhelloworldと表示されます。クラスメソッドはクラスをもとに作ったインスタンス(オブジェクト/変数)から他のオブジェクトに影響を与える処理を指します。

 

クラスが持つ関数です。それを持つオブジェクト(変数)の後ろに属性名を付けて変数.属性名()で、その属性が持つ処理を行うことができます。

 

メソッドは各オブジェクトに結びついた関数だと考えればOKです。メソッドを使うことで、オブジェクトを操作することが可能です。

 

私たちがPythonのプログラミングでよく使う処理を引き合いに出してメソッドと属性を見ていきます。クラスの「メソッド」として、代表的なのがリスト型のオブジェクトが持つ.append()というメソッドです。

 

 

test=[a,b,c,d]
test.append(e)←test(リスト型)にappend()という属性処理を行っている
test
※[a,b,c,d,e]

 

 

testはリスト型の性質を持つオブジェクト(変数)なので、.append()という属性の処理を行うことができます。このappend()はリストに任意のデータを追加するという属性処理なので、実行するとtestにeという新しいデータが追加されます。

 

もし保有していないメソッドを指定すると「〇〇 has no attribute(このオブジェクトにはそんな属性は付与されていないよ)」というエラーメッセージが帰ってきます。

 

 

クラスの「属性(attribute)」とは何か?

 

オブジェクトはそのデータ型ごとに属性(attribute)を持っています。属性の中には、大きく分けて「変数」と「メソッド(関数)」の2つがあり、変数のことを「プロパティ」、関数のことを「メソッド」といいます。ようはメソッド+プロパティ=属性であり、メソッドは属性の一部だと言えます。

 

プログラミングをしていてよくあるのが、「・・・このオブジェクト(変数)ってどういう処理ができるんだろう・・・?」という疑問です。まあ大抵はググってライブラリのレファレンス(仕様書)を見ればいいのですが、自作のクラスとかだとたまにどういうメソッドが使えるのか、属性があるのか確認したくなります。

 

そんなときはPythonにもとから搭載されている関数である※組み込み関数の1つであるdir()で確認することができます。

 

※組み込み関数…ライブラリをインポートせずに使えるデフォルトで搭載されているlen()やprint()のことを指します

 

 

#dir()でtestの持つ属性を確認する
print(dir(test))

 

['__add__', '__class__', '__contains__', '__delattr__',
 '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', 
'__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', 
'__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__',
 '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', 
'__reduce__', '__reduce_ex__', '__repr__', '__reversed__',
 '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', 
'__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 
'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

 

 

↑のようにdir()でtestというオブジェクト=変数が持つメソッドを確認できます。dir()の実行結果を目を見るにはfor文を使ったりprint()関数で使用する必要があります。そして、実行結果を見るとappend()などが使えるということがわかると思います。

 

このようにクラスのもつ変数と関数はdir()で一覧で確認することができます。

 

 

終わり

 

先ほどdir()でオブジェクトの持つ属性を確認しましたが、__len__’, と ‘append’のようにメソッドにも2つの種類が存在します。この__が付いている方が関数でついていない方がメソッドです。この「メソッド」と「関数」の違いについては次の記事で解説します。

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

タイトルとURLをコピーしました