親切
class Car:
def _init_(self, make, model, year):
"""self保存了当前创建的实例在内存中的地址,和形参相关联的值可以通过self关联到当前创建的实例的属性"""
self.make = make
self.model = model
self.year = year
def get_descriptive_name(self):
long_name = f"{self.year}{self.make}{self.model}"
return long_name.title()
"""利用类可以生成实例,然后将这个实例赋给变量my_new_car,实质是将实例的地址赋给了变量my_new_car"""
my_new_car = Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())
Python のクラスはオブジェクト指向言語の機能です。クラスは車など、現実の大きなカテゴリを表すことができます。クラスを使用してインスタンスを生成すると、さまざまなブランド、モデル、年式の車を表すことができます。上記のプログラムの self と my_new_car はどちらもインスタンス自体への参照です。self が Car クラス内で使用され、my_new_car が Car クラス外で使用されるというだけです。
メソッド_init_()
_init_() メソッドは、クラスから新しいインスタンスが生成されるたびに自動的に実行される Python クラスの特別なメソッドです。上記のコードでは、_init_() は 4 つの仮パラメータ (self、make、model、year) を含むように定義されています。self は必須であり、他のパラメータの前に置く必要があります。Python が Car インスタンスを作成するためにこのメソッドを呼び出すと、実際のパラメーター self が自動的に渡されるためです。インスタンスに関連付けられたすべてのメソッド呼び出しは、インスタンス自体への参照である引数 self を自動的に渡し、インスタンスがクラス内のメソッドおよびプロパティにアクセスできるようにします。
継承する
サブクラスメソッド _init_()
既存のクラスに基づいて新しいクラスを作成する場合、通常は親クラスのメソッド _init_() が呼び出されます。これにより、スーパークラスの _init_() メソッド内のすべてのプロパティが初期化され、サブクラスにプロパティを含めることができるようになります。親クラスとサブクラスの関係は、自動車と電気自動車の関係にたとえることができます。次に、継承メソッドを使用して、Car クラスのサブクラス ElectricCar クラスを作成します。継承コードを記述するときは、親クラスはサブクラスの前に出現する必要があります。
class Car:
def _init_(self, make, model, year):
"""self保存了当前创建的实例在内存中的地址,和形参相关联的值可以通过self关联到当前创建的实例的属性"""
self.make = make
self.model = model
self.year = year
def get_descriptive_name(self):
long_name = f"{self.year}{self.make}{self.model}"
return long_name.title()
"""利用类可以生成实例,然后将这个实例赋给变量my_new_car,实质是将实例的地址赋给了变量my_new_car"""
my_new_car = Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())
"""定义子类时,必须在圆括号内指定父类的名称"""
class ElectricCar(Car):
"""接收创建Car实例所需的信息"""
def _init_(self, make, model, year):
"""super()是一个特殊函数,让你能够调用父类的方法。这行代码让python调用Car类的方法_init_(),让ElectricCar实例包含这个方法中定义的所有属性"""
super()._init_(make, model, year)
"""也可以写作super(ElectricCar, self)._init_(make, model, year),这是最完备的写法"""
my_tesla = ElectricCar('tesla','model s','2019')
print(my_tesla.get_descriptive_name())
スーパーの一般的な使い方
上記のコードは、Python での super の一般的な使用法を示しています。これは、サブクラスが親クラスの初期化メソッドを呼び出すために使用されます。クラスの継承では、メソッドが再定義されると、そのメソッドは同じメソッドをオーバーライドします。親クラスの名前ですが、場合によっては親クラスの機能も同時に実現したいことがありますが、その際には super() などで実現できる親クラスのメソッドを呼び出す必要があります。
class Animal(object):
def __init__(self, name):
self.name = name
def greet(self):
print('the animal name is %s' % self.name)
class Dog(Animal):
def greet(self):
super(Dog, self).greet()
print('wangwang')
dog = Dog('huang')
dog.greet()
結果は
the animal name is huang
wangwang