Lecture 77 クラスの定義
class:
person = Person() オブジェクト生成
person.say_something() クラス関数実行
class Person(object): 継承のときとか
Lecture 78 クラスの初期化とクラス変数
コンストラクタ / デコンストラクタ
コンストラクタ
デコンストラクタ
Lecture 80 クラスの継承
class Car(object):
class ToyotaCar(Car):
Lecture 81 メソッドのオーバーライドとsuperによる親メソッドの読み出し
superで親の関数を呼び出せる
Lecture 82 プロパティを使った属性の設定
@property 読み出しのみの設定
@...setter 読み出ししたプロパティに書き込み設定を与える
Lecture 83 クラスを構造化する際の注意点
プロパティ(要素)を書き換えてしまう可能性
Lecture 84 ダックタイピング
Lecture 85 抽象クラス
必ず継承してほしい(実装してほしい)関数
@...abstractmethod
Lecture 86 多重継承
class Person()
class Car
class PersonCar(Person,Car):
同じ関数があれば左のオブジェクトが優先
Lecture 87 クラス変数
使ったオブジェクトで共有される(staticみたいなもの)
クラスメソッドとスタティックメソッド
@classmethod
@staticmethod
クラスの中で定義するけれども、インスタンスとはやりとりしない
インスタンスとやりとりしないのなら、メソッドでなく、ただの関数でいいのではないか。
ではなぜ、staticmethodなるものがあるのか。
staticmethodは、「ただの関数」を通常のモジュールレベルではなく、クラスレベルで定義したものと言える。
「ただの関数」をクラスレベルで定義して、なんの意味があるのかというと、例えばこれを継承して、サブクラスでオーバーライドできる。
特殊メソッド
自分で定義したオブジェクトを使った計算の演算子を定義したり。
__init__
__str__
__len__
__add__
オブジェクトの加法(+)を定義したいとき
def __add__(self,y):
return (self.x * y.x) # A + B が来たら、A.x * B.x を返す。無茶苦茶な使用だな。
__eq__
オブジェクトの比較(==)を定義したいとき
最終更新:2020年07月11日 14:37