記事ディレクトリ
序文
今回の学習内容は主にオブジェクト指向の授業です。
1. クラスを作成して使用する
以下はクラスの簡単な定義ですが、Dog の後に括弧がありません。これは、このクラスが他のクラスから継承せず、空白から作成されることを示しています。
>>> class Dog:
def __init__(self,name,age):
self.name = name
self.age = age
def sit(self):
print("{name} is sit".format(name = self.name))
__init__() メソッドはマジック メソッドです。このメソッドには self、name、age の 3 つの仮パラメータがあり、このクラスを呼び出してインスタンスを作成するときに init メソッドが自動的に呼び出されるため、self を省略することはできません。次に、実パラメータ self が自動的に渡され、インスタンスに関連する各メソッド呼び出しは、インスタンス自体への参照である実パラメータ self を自動的に渡し、インスタンスがクラス内のプロパティとメソッドにアクセスできるようにします。
sit() メソッドは、作成されたインスタンスがこのメソッドを呼び出すことができることを示す、仮パラメータ self を 1 つだけ持つ通常のメソッドです。
dog_1 = Dog('deng',18)
dog_1.sit()
上記は Dog クラスのインスタンス Dog_1 を作成し、2 つの実際のパラメータ name と age を渡すだけで、self は自動的に渡されます。次に、sit() メソッドを呼び出します
場合によっては、一部のプロパティにデフォルト値を指定することもできます。
例えば
>>> class Dog:
def __init__(self,name,age):
self.name = name
self.age = age
self.number = 100
def sit(self):
print("{name} is sit".format(name = self.name))
>>> dog_1 = Dog('deng',18)
>>> dog_1.number
100
>>>
このクラスを定義するときは、number 属性の値を 100 として指定し、このクラスのインスタンスを作成し、このデフォルト属性の値を出力します。
2. 継承
クラスを作成する場合、最初からクラスを作成する必要はなく、親クラスを継承することを選択できます。
クラスが親クラスから継承すると、親クラスのすべてのプロパティとメソッドが取得されます。サブクラスは親クラスのすべてのプロパティとメソッドを継承した後、独自のプロパティとメソッドを定義することもできます。
class Animal:
def __init__(self,name,age):
self.name = name
self.age = age
def sit(self):
print("sittint")
ここでAnimalクラスを定義します
class Dog(Animal):
def __init__(self,name,age,number):
super().__init__(name,age)
self.number = number
次に、Animal 親クラスを継承する Dog クラスを定義します。サブクラスの __init__ メソッドの最初のsuper().__init__(name,age)
機能は、親クラスの __init__ メソッドを呼び出し、このメソッドで定義されたすべての属性がサブクラスに含まれるようにします。サブクラス Dog() には親クラス Animal() よりも 1 つ多い属性番号があることがわかります。そのため、次に数値属性に値を割り当てます。
親クラスのメソッドがサブクラスに適さない場合は、親クラスのメソッドをオーバーライドすることもできます。親クラスと同じ名前のメソッド名をサブクラスに記述するだけです。