クラスと __init__ メソッド
クラスを定義し、オブジェクトを作成して属性を初期化します。
「クラスと __init__ メソッド」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。
クラスの定義
class キーワードを使ってクラスを定義します。慣例として、クラス名にはCapWordsを使います。
class Dog:
pass
fido = Dog()
print(type(fido)) # <class '__main__.Dog'>__init__メソッド
オブジェクトが作成されると、__init__ が自動的に呼び出されます。インスタンス属性の初期設定に使います。
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
fido = Dog("Fido", "Labrador")
print(fido.name) # Fidoselfの説明
self は現在のインスタンスを参照します。すべてのインスタンスメソッドで最初のパラメーターにする必要があります。Pythonが自動的に渡します。
class Counter:
def __init__(self):
self.count = 0
def increment(self):
self.count += 1
c = Counter()
c.increment()
print(c.count) # 1複数のインスタンス
各インスタンスは、__init__ で設定されたインスタンス属性の独自のコピーを持ちます。
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
p1 = Point(1, 2)
p2 = Point(5, 7)
print(p1.x, p2.x) # 1 5__init__でのデフォルトパラメーター値
__init__ のパラメーターにデフォルト値を指定すると、一部の引数を省略できるようになります。
class Circle:
def __init__(self, radius=1.0):
self.radius = radius
c1 = Circle()
c2 = Circle(5)
print(c1.radius, c2.radius) # 1.0 5インスタンスメソッド
クラス内で定義されたメソッドは、self を介してインスタンスを操作します。
class Rectangle:
def __init__(self, w, h):
self.w = w
self.h = h
def area(self):
return self.w * self.h
r = Rectangle(4, 5)
print(r.area()) # 20作成後の属性の追加
作成後のインスタンスに属性を追加できますが、すべての属性を __init__ で宣言するほうが明確です。
class Person:
def __init__(self, name):
self.name = name
p = Person("Alice")
p.age = 30 # added after creation
print(p.name, p.age)__init__の戻り値
__init__ は None を返さなければなりません。それ以外を返すと TypeError が発生します。
class Broken:
def __init__(self):
return 42 # TypeError!
# Correct
class OK:
def __init__(self):
self.value = 42
# implicit return Noneインスタンス型の確認
isinstance() を使うと、オブジェクトがあるクラスのインスタンスかどうかを確認できます。
class Animal:
pass
class Dog(Animal):
pass
d = Dog()
print(isinstance(d, Dog)) # True
print(isinstance(d, Animal)) # True__dict__属性
すべてのインスタンスは、属性を __dict__ 辞書に保存します。
class Book:
def __init__(self, title, pages):
self.title = title
self.pages = pages
b = Book("Python 101", 300)
print(b.__dict__) # {'title': 'Python 101', 'pages': 300}属性の削除
del を使うと、実行時にインスタンスから属性を削除できます。
class Config:
def __init__(self):
self.debug = True
self.version = "1.0"
cfg = Config()
del cfg.debug
print(hasattr(cfg, "debug")) # False確認問題
Pythonのクラスメソッドにおける self の役割は何ですか?
復習
クラスはオブジェクトの設計図です。__init__ はインスタンス属性を初期化し、self は現在のオブジェクトを参照します。また、各インスタンスは独自の属性辞書を保持します。
よくある質問
「クラスと __init__ メソッド」レッスンは無料ですか?
はい。「クラスと __init__ メソッド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。
「クラスと __init__ メソッド」で何を学びますか?
クラスを定義し、オブジェクトを作成して属性を初期化します。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Python Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「クラスと __init__ メソッド」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPython Academyレッスンでコードを書いて実行できますか?
はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- クラスと __init__ メソッド
- インスタンス属性とクラス属性
- インスタンスメソッドと self
- 特殊メソッド: __str__ と __repr__