Python によるオブジェクト指向プログラミング
Alex Yarosh
Content Quality Analyst @ DataCamp
selfself.___ で属性参照
class MyClass:
# クラス内の関数定義
# 第1引数は self
def my_method1(self, other_args...):
# ここで処理
def my_method2(self, my_attr):
# 代入で属性を作成
self.my_attr = my_attr
...
__init__() はオブジェクト生成のたびに呼ばれるclass Customer: def __init__(self, name): self.name = name # <--- .name 属性を作成し、name 引数を設定 print("The __init__ method was called")cust = Customer("Lara de Silva") #<--- __init__ が暗黙に呼ばれる print(cust.name)
The __init__ method was called
Lara de Silva
class Customer: def __init__(self, name, balance): # <-- balance パラメータを追加self.name = name self.balance = balance # <-- balance 属性を追加 print("The __init__ method was called")cust = Customer("Lara de Silva", 1000) # <-- __init__ が呼ばれる print(cust.name) print(cust.balance)
The __init__ method was called
Lara de Silva
1000
class Customer: def __init__(self, name, balance=0): #<-- balance の既定値を設定self.name = name self.balance = balance print("The __init__ method was called")cust = Customer("Lara de Silva") # <-- balance を明示しないprint(cust.name) print(cust.balance) # <-- 属性は作成される
The __init__ method was called
Lara de Silva
0
class MyClass:
def my_method1(self, attr1):
self.attr1 = attr1
...
def my_method2(self, attr2):
self.attr2 = attr2
...
obj = MyClass()
obj.my_method1(val1) # <-- attr1 が作成される
obj.my_method2(val2) # <-- attr2 が作成される
class MyClass: def __init__(self, attr1, attr2): self.attr1 = attr1 self.attr2 = attr2 ...# すべての属性が作成される obj = MyClass(val1, val2)
__init__() で初期化__init__() で初期化クラスは CamelCase、関数・属性は lower_snake_case
__init__() で初期化クラスは CamelCase、関数・属性は lower_snake_case
self は self のままclass MyClass:
# 動くが推奨しない
def my_method(kitty, attr):
kitty.attr = attr
__init__() で初期化クラスは CamelCase、関数・属性は lower_snake_case
self は selfclass MyClass:
"""このクラスは何もしない"""
pass
Python によるオブジェクト指向プログラミング