【Python】オブジェクト向けプログラミング思想

2466 ワード

コンセプト
「ペン」は抽象的な概念として、クラスと見なすことができる.実在するペンは、「ペン」というタイプのオブジェクトです.
クラスには、クラスの「メソッド」と呼ばれる関数があります.
クラス/オブジェクトには、ドメインと呼ばれる変数があります.
ドメインは所属によって「クラス変数」と「インスタンス変数」と呼ばれます.
ペンの例を続けます.1つのペンには書く機能があるので、「書く」ことがペンという方法です.
各ペンには独自の色があり、「色」はあるペンのドメインであり、このペンのインスタンス変数でもあります.
「クラス変数」については、限定版の万年筆があると仮定し、このペンの種類を作成します.このペンの「生産量」は、このペンのクラス変数と見なすことができる.このドメインはあるペンではなく、このタイプのペンの共有属性に属しているからです.
ドメインとメソッドをクラスのプロパティと呼びます.
pythonはオブジェクト向けの言語で、その中のすべてのものがオブジェクトです.だから私たちもずっと相手を使っていました.

class MyClass:
   name = 'sam'
   def sayHi(self):
      print 'Hello%s' % self.name
      #self       ,            。
mc = MyClass()

print mc.name

mc.name = 'Lily'
mc.sayHi()

≪インスタンス|Instance|emdw≫
自転車は自動車と同じ属性を持っている:速度(speed).走行/走行にかかる時間を出力する同じ方法もあります.しかし、今回は車に1キロ当たりの燃費(fuel)という属性を追加します.自動車が一定距離を走行する方法では、所要時間のほかに必要な油量を出力する.
       ,          ,             ,                      。      ,                 ,                  。                   :  。
         ,      Vehicle  ,     ,                :  ,     。   Car  Bike      Vehicle ,       。      ,             。

Vehicleクラスは基本クラスまたはスーパークラスと呼ばれ,CarクラスとBikeクラスは導出クラスまたはサブクラスとなる.
class Vehicle:
    def __init__(self, speed):
        self.speed = speed
    def drive(self, distance):
        print 'need %f hour(s)' % (distance / self.speed)
class Bike(Vehicle):
    pass
class Car(Vehicle):
    def __init__(self, speed, fuel):
        Vehicle.__init__(self, speed)
        self.fuel = fuel
    def drive(self, distance):
        Vehicle.drive(self, distance)
        print 'need %f fuels' % (distance * self.fuel)
b = Bike(15.0)
c = Car(80.0, 0.012)
b.drive(100.0)
c.drive(100.0)

コードを説明します.
__init__関数は、クラスが作成されたときに自動的に呼び出され、クラスを初期化します.クラスを作成するときに提供するパラメータです.そこでspeedの値を数値で初期化した.
class定義の後の括弧には、このクラスがどのクラスに継承されているかが表示されます.Bike(Vehicle)とは、BikeがVehicleから継承されたサブクラスであることを意味する.Vehicleのプロパティとメソッドは、Bikeにあります.Bikeには追加の機能は必要ないので、passでクラスに空のブロックを残し、何も書かなくてもいいです.
Carクラスでは、私たちはまた再定義しました.init__とdrive関数を使用すると、Vehicleから継承された同名の関数が上書きされます.しかし、「Vehicle.関数名」を使用して、そのスーパークラスメソッドを呼び出すことができます.
これにより、Vehicleとしての機能が得られる.なお、クラス名でメソッドを呼び出すので、以前のようにオブジェクトで呼び出すのではなく、selfのパラメータ値を指定する必要があります.スーパークラスメソッドを呼び出した後,Carにfuel属性を追加し,driveに1行の情報を複数出力した.
最後に、速度15の自転車オブジェクトと、速度80、燃費0.012の自動車をそれぞれ作成し、100の距離を走らせます.
転載先:https://www.cnblogs.com/Neo007/p/7373418.html