インスタンスメソッドと self
オブジェクト自身のデータを操作するメソッドを記述します。
「インスタンスメソッドと self」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。
導入
インスタンスメソッドの定義
class Circle:
def __init__(self, r): self.r = r
def area(self):
import math
return math.pi * self.r**2
print(Circle(5).area())メソッドの呼び出し
class Dog:
def __init__(self, name): self.name = name
def bark(self): print(f'{self.name} says Woof!')
Dog('Rex').bark()selfを返すメソッド
class Builder:
def __init__(self): self.data = {}
def set(self, k, v):
self.data[k] = v
return self
def build(self): return self.data
result = Builder().set('x',1).set('y',2).build()
print(result)プライベートメソッド(慣例)
class Account:
def __init__(self, bal): self._bal = bal
def _validate(self, amount): return amount > 0
def deposit(self, amount):
if self._validate(amount):
self._bal += amount
a = Account(100)
a.deposit(50)
print(a._bal)メソッドをプロパティとして使う
class Circle:
def __init__(self, r): self.r = r
@property
def diameter(self): return self.r * 2
c = Circle(5)
print(c.diameter) # no ()状態の変更
class Stack:
def __init__(self): self.items = []
def push(self, x): self.items.append(x)
def pop(self): return self.items.pop()
def peek(self): return self.items[-1]
s = Stack()
s.push(1); s.push(2)
print(s.pop(), s.peek())オブジェクトの比較
class Point:
def __init__(self, x, y): self.x,self.y=x,y
def __eq__(self, other): return self.x==other.x and self.y==other.y
print(Point(1,2)==Point(1,2))イテレーションプロトコル
class Countdown:
def __init__(self, n): self.n = n
def __iter__(self): return self
def __next__(self):
if self.n <= 0: raise StopIteration
self.n -= 1; return self.n + 1
print(list(Countdown(3)))コンテキストマネージャープロトコル
class Timer:
def __enter__(self):
import time
self.start = time.time()
return self
def __exit__(self, *args):
import time
print(f'elapsed: {time.time()-self.start:.3f}s')
with Timer(): passメソッドと関数
class Dog:
def bark(self): print('woof')
print(type(Dog.bark))
print(type(Dog().bark))確認問題
復習
続けましょう
よくある質問
「インスタンスメソッドと self」レッスンは無料ですか?
はい。「インスタンスメソッドと self」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。
「インスタンスメソッドと self」で何を学びますか?
オブジェクト自身のデータを操作するメソッドを記述します。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Python Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「インスタンスメソッドと self」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPython Academyレッスンでコードを書いて実行できますか?
はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- クラスと __init__ メソッド
- インスタンス属性とクラス属性
- インスタンスメソッドと self
- 特殊メソッド: __str__ と __repr__