クラスの構成要素:属性とメソッド

Python によるオブジェクト指向プログラミング

Alex Yarosh

Content Quality Analyst @ DataCamp

基本のクラス

class Customer:

# code for class goes here
pass
  • class <name>: でクラス定義を開始
  • class 内のコードはインデント
  • 空のクラスは pass を使う
c1 = Customer()
c2 = Customer()
  • ClassName() でクラス ClassName のオブジェクトを作成
Python によるオブジェクト指向プログラミング

クラスにメソッドを追加

class Customer:  

    def identify(self, name):   
      print("I am Customer " + name)
  • メソッド定義=クラス内の関数定義
  • メソッド定義では第1引数に self を使う
cust = Customer()
cust.identify("Laura")
I am Customer Laura
  • オブジェクトから呼ぶときは self を書かない
Python によるオブジェクト指向プログラミング
class Customer:  

    def identify(self, name):   
      print("I am Customer " + name)

cust = Customer()
cust.identify("Laura")

self とは?

  • クラスはひな形。特定のオブジェクトのデータをどう参照する?
  • self はクラス定義内で使う「そのオブジェクト」への参照
  • すべてのメソッドの第1引数にする
  • オブジェクトから呼ぶときは Python が self を補う

cust.identify("Laura") _は_ Customer.identify(cust, "Laura") と解釈されます

Python によるオブジェクト指向プログラミング

属性が必要です

  • カプセル化: データとその操作メソッドをまとめる
  • 例: Customer の名前は属性にする

  $$\text{\Large{属性はメソッド内の代入(=)で作成}}$$

Python によるオブジェクト指向プログラミング

クラスに属性を追加

class Customer:  
    # set the name attribute of an object to new_name
    def set_name(self, new_name):

# Create an attribute by assigning a value self.name = new_name # <-- will create .name when set_name is called
cust = Customer()                   # <--.name doesn't exist here yet

cust.set_name("Lara de Silva") # <--.name is created and set to "Lara de Silva"
print(cust.name) # <--.name can be used
Lara de Silva
Python によるオブジェクト指向プログラミング

旧バージョン

class Customer:  



    # Using a parameter
    def identify(self, name):   
      print("I am Customer" + name)
cust = Customer()

cust.identify("Eris Odoro")
I am Customer Eris Odoro

新バージョン

class Customer:  
   def set_name(self, new_name): 
      self.name = new_name

    # オブジェクト自身の .name を使用
    def identify(self):     
      print("I am Customer" + self.name)
cust = Customer()
cust.set_name("Rashid Volkov")
cust.identify()
I am Customer Rashid Volkov
Python によるオブジェクト指向プログラミング

Let's practice!

Python によるオブジェクト指向プログラミング

Preparing Video For Download...