変数からカプセル化まで: この記事は機械学習のための強固なPythonの基礎を築くのに役立ちます

変数からカプセル化まで: この記事は機械学習のための強固なPythonの基礎を築くのに役立ちます

[[206375]]

まず、Python とは何でしょうか? Python の作成者である Guido van Rossum によると、Python とは、コードの読みやすさを中核概念として設計され、プログラマーが数行のコードでアイデアを簡単に表現できるようにする高水準プログラミング言語です。実際、私が Python を学ぶことを選んだ最初の理由は、そのプログラミングの優雅さでした。Python でコードを書いてアイデアを表現するのはとても自然に感じられます。

Python は、解釈、コンパイル、インタラクティブ性、オブジェクト指向性を組み合わせた高レベルのスクリプト言語です。 Python は可読性が高くなるよう設計されています。英語のキーワードや他言語の一部句読点を多用する言語に比べ、Python は他言語よりも特徴的な文法構造を持っています。

もう 1 つの理由は、Python はさまざまな方法で記述および使用できることです。データ サイエンス、Web 開発、機械学習はすべて Python を使用できます。 Quora、Pinterest、Spotify はすべて、バックエンド開発言語として Python を使用しています。

基礎

変数

簡単に言えば、変数は値を格納する単語と考えることができます。

Python では、変数を定義して値を割り当てるのは非常に簡単です。変数「one」に 1 を格納するとします。

  1. 1 = 1

簡単です。変数「one」に 1 を割り当てるだけです。

  1. 2 = 2
  2.  
  3. 何らかの数字 = 10000

また、任意の変数に任意の値を割り当てることができます。上記のように、整数 2 が変数「two」に割り当てられ、10,000 が変数「some_number」に割り当てられます。整数に加えて、ブール演算、文字列、浮動小数点数、その他のデータ型を割り当てることもできます。

  1. # ブール値
  2. true_boolean = 
  3. false_boolean = 
  1. # 弦
  2.  
  3. my_name = "レアンドロ Tk"  
  1. #フロート 
  2.  
  3. 本の価格 = 15.80

制御フロー: 条件文

「If」ステートメントは、式を true または false に評価します。 true の場合、「If」条件内のサブステートメントが下方向に実行されます。例えば:

  1. Trueの場合:
  2. print( "Hello Python If" )
  3. 2 > 1の場合:
  4. print( "2は1より大きい" )

2 は 1 より大きいので、「print」コードが実行されます。 「If」式が false の場合、「else」の下のサブステートメントが実行されます。

  1. 1 > 2の場合:
  2. print( "1は2より大きい" )
  3. それ以外
  4. print( "1は2より大きくない" )

「elif」ステートメントを使用して実行条件を追加することもできます。

  1. 1 > 2の場合:
  2. print( "1は2より大きい" )
  3. 2 > 1の場合:
  4. print( "1は2より大きくない" )
  5. それ以外
  6. print( "1は2に等しい" )

ループ/イテレータ

Python では、さまざまな形式の反復処理が可能です。 while と for の 2 つについて説明します。

While ループ: このステートメントが true の場合、次のコードが実行され、1 から 10 までの数字が出力されます。

  1. 数値 = 1
  2. num <= 10 の場合:
  3. print(数値)
  4. 数値 += 1

while ループには「ループ条件」が必要です。それが真実であれば、反復を続けます。上記の例では、num が 11 の場合、ループ条件は false となり、ループが終了します。

次のコードは、これをよりよく理解するのに役立ちます。

  1. ループ条件 = True  
  2.  
  3. while ループ条件:
  4. print( "ループ条件は %s を維持します" %(loop_condition))
  5. loop_condition = False  

ループ条件が true の場合、false になるまで繰り返し処理が続けられます。 For ループ: ループするコード ブロック内で変数「num」を使用すると、「for」ステートメントによってその変数が自動的に反復処理されます。このコードは while コードと同じものを出力します (1 から 10 まで)。

  1. iが範囲(1, 11)内にある場合:
  2. 印刷(i)

ほら、とても簡単ですよ。範囲は 1 から 11 番目の要素までです (10 は 10 番目の要素です)。さらに、数値を直接指定すると、For ループは 0 からその数値 (含まれない) まで反復します。たとえば、次の For ループは 0 から 9 を出力します。

  1. iが範囲(10)内にある場合:
  2. 印刷(i)

リスト: 配列データ構造

リストは、一連の値(必要な整数など)を格納するために使用できる配列またはコレクションです。では、これを使用しましょう:

  1. 私の整数 = [1, 2, 3, 4, 5]

上記のように、配列を作成し、それを my_integers 変数に割り当てました。以下に示すように、配列内の値はインデックスを通じて取得できます。配列の最初の要素のインデックスは 0、2 番目の要素のインデックスは 1 というようになります。

次の文を使うとよりよく理解できるかもしれません。

  1. 私の整数 = [5, 7, 1, 3, 4]
  2.  
  3. 印刷(my_integers[0]) # 5
  4.  
  5. 印刷(my_integers[1]) # 7
  6.  
  7. 印刷(my_integers[4]) # 4

同様に、リスト要素の型も文字型にすることができます。次のように、要素が文字であるリストを作成します。

  1. 親戚の名前 = [
  2. 「としあき
  3. 「ジュリアナ」
  4. 「ユウジ
  5. 「ブルーノ」
  6. 「カイオ」  
  7. ]
  8. print(relatives_names[4]) # カイオ

リストの定義とインデックスの使い方を学んだので、リスト データ構造に要素を追加する方法を学びましょう。リストに要素を追加する最も一般的な方法は、追加することです。

  1. 本棚 = []
  2. bookshelf.append( "効果的なエンジニア" )
  3. bookshelf.append( "週4時間労働" )
  4. print(bookshelf[0]) # 効果的なエンジニア
  5. print(bookshelf[1]) # 4時間 労働

append メソッドは非常にシンプルで、リストの末尾に追加したい要素にこのメソッドを適用するだけです。

辞書: キー値データ構造

リストは要素を取得するために整数インデックスを使用することはすでにわかっていますが、インデックスとして整数を使用したくない場合は、辞書データ構造を使用できます。このデータ構造では、数値、文字、またはその他のタイプのインデックスを使用できます。辞書内の各キー=>値のペアはコロン (**:**) で区切られ、各ペアはコンマ (**,**) で区切られ、辞書全体は中括弧 (**{})** で囲まれます。以下に示すように、辞書はキーと値のコレクションです。

  1. 辞書の例 = {
  2. "キー1" : "値1" ,
  3. "キー2" : "値2" ,
  4. "キー3" : "値3"  
  5. }

キーは対応する値を指すインデックスであり、対応する要素の値にアクセスするにはキーを使用する必要があります。

  1. 辞書_tk = {
  2. 「名前」 : 「レアンドロ」
  3. 「ニックネーム」 : 「Tk」
  4. 「国籍」 「ブラジル人」  
  5. }
  1. print( "私の名前は%sです" %(dictionary_tk[ "name" ])) # 私の名前 レアンドロ
  2.  
  3. print( "でも、私を %s と呼んでください" %(dictionary_tk[ "nickname" ])) # でも、私を Tk と呼んでください
  4.  
  5. print( "ちなみに私は%sです" %(dictionary_tk[ "nationality" ])) #そして ちなみに私はブラジル人です

上記は、4 つのキーと対応する値が定義された辞書を作成します。print 関数は、辞書のキーを使用して対応する値を取得します。また、辞書の値には任意のタイプのデータを使用できます。以下では、文字キーと数値を持つキーと値のペアを追加します。

  1. 辞書_tk = {
  2. 「名前」 : 「レアンドロ」
  3. 「ニックネーム」 : 「Tk」
  4. 「国籍」 「ブラジル人」
  5. 「年齢」 : 24
  6. }
  1. print( "私の名前は%sです" %(dictionary_tk[ "name" ])) # 私の名前 レアンドロ
  2.  
  3. print( "でも、私を %s と呼んでください" %(dictionary_tk[ "nickname" ])) # でも、私を Tk と呼んでください
  4.  
  5. print( "ちなみに私は%iと%sです" %(dictionary_tk[ "年齢" ], dictionary_tk[ "国籍" ])) #そして ちなみに私はブラジル人です

次に、辞書に要素を追加する方法を理解する必要があります。実際、辞書の本質は、特定の値を指すキーワードのコレクションです。したがって、辞書内のキーワード(存在しない場合もあります)に直接値を割り当てて、キーと値のペアを変更または追加することができます。

  1. 辞書_tk = {
  2. 「名前」 : 「レアンドロ」
  3. 「ニックネーム」 : 「Tk」
  4. 「国籍」 「ブラジル人」  
  5. }
  6. dictionary_tk['年齢'] = 24

  7. print(dictionary_tk) # {'nationality': 'ブラジル', 'age': 24, 'nickname': 'Tk', 'name': 'Leandro'}

反復: データ構造内のループ

リスト ループも非常にシンプルです。ループ内でリストを変更したり出力したりできます。次のように、リストから要素を 1 つずつ抽出するために For ループがよく使用されます。

  1. 本棚 = [
  2. 「効果的なエンジニア」
  3. 「週4時間労働
  4. 「ゼロから1」
  5. 「リーンスタートアップ」
  6. 「夢中」  
  7. ]
  8.  
  9. 本棚にあるの場合:
  10. 印刷物(本)

ハッシュ データ構造の場合、辞書内のキーと For ループを使用して、キーと対応する値を順番に読み取ることもできます。

  1. 辞書 = { "何らかのキー" : "何らかの値" }
  2.  
  3. のために  辞書:
  4. print( "%s --> %s" %(キー, 辞書[キー]))
  5.  
  6. # いくつかのキー--> いくつかの値 

iteritems メソッドを使用しても同じ効果が得られます。

  1. 辞書 = { "何らかのキー" : "何らかの値" }
  2.  
  3. のために  dictionary.items()キー、値:
  4. print( "%s --> %s" %(キー、値))
  5.  
  6. # いくつかのキー--> いくつかの値 

2 つのパラメータに key と value という名前を付けましたが、別の名前を付けることもできます。以下に示すように、 attribute と value を辞書のキー パラメータとして使用し、同じように機能します。

  1. 辞書_tk = {
  2. 「名前」 : 「レアンドロ」
  3. 「ニックネーム」 : 「Tk」
  4. 「国籍」 「ブラジル人」
  5. 「年齢」 : 24
  6. }
  7. dictionary_tk.items()属性、値の場合:
  8. print( "私の%sは%sです" %(属性、値))
  9. # 私の名前はレアンドロです
  10. # 私のニックネームはTkです
  11. # 私の国籍はブラジルです
  12. # 私の年齢は24歳です

高度な

クラスとオブジェクト

オブジェクトは、犬、猫、自転車など、現実世界のターゲットを表します。一般的に、オブジェクトにはデータと動作という 2 つの特性があります。オブジェクト「車両」には、車輪の数、ドアの数、容量などのデータがあります。また、車両が加速したり、ブレーキをかけたり、燃料使用量を表示したりできるなどの動作もあります。

オブジェクト指向プログラミングでは、データを属性として、動作をメソッドとして表現します。

クラスは独立したオブジェクトを作成するための設計図です。現実の世界では、同じ種類のオブジェクトが数多く存在することがよくあります。例えば、同じモデルの車両には、エンジン、ホイール、シートなどの部品があり、各車両は同じ設計図に従って製造され、同じ部品が搭載されています。

したがって、オブジェクトは客観的なものの抽象化であり、クラスはオブジェクトの抽象化です。オブジェクトはクラスのインスタンスであり、クラスはオブジェクトのテンプレートです。

Python はオブジェクト指向プログラミング言語なので、クラスとオブジェクトの概念もあります。 Python オブジェクト指向プログラミングのケースを理解する前に、オブジェクト指向プログラミングの基本的な概念を理解しておく必要があります。

  • クラス: 同じプロパティとメソッドを持つオブジェクトのコレクションを記述するために使用されるクラス。コレクション内のすべてのオブジェクトに共通するプロパティとメソッドを定義します。オブジェクトはクラスのインスタンスです。
  • クラス変数: クラス変数は、インスタンス化されたすべてのオブジェクトに共通です。クラス変数はクラス内、関数本体の外で定義されます。クラス変数は通常、インスタンス変数として使用されません。
  • データ メンバー: クラス変数またはインスタンス変数は、クラスとそのインスタンス オブジェクトに関連するデータを処理するために使用されます。
  • メソッドのオーバーライド: 親クラスから継承したメソッドがサブクラスのニーズを満たせない場合は、メソッドを書き換えることができます。このプロセスはメソッドのオーバーライドと呼ばれ、メソッドの書き換えとも呼ばれます。
  • インスタンス変数: 現在のインスタンスのクラスにのみ適用されるメソッドで定義された変数。
  • 継承: 派生クラスは基本クラスのフィールドとメソッドを継承します。継承により、派生クラスのオブジェクトを基本クラスのオブジェクトとして扱うこともできます。たとえば、クラス「Dog」のオブジェクトは、クラス「Animal」から派生したもので、クラス「Animal」は「is-a」関係(犬は動物である)をモデル化します。
  • インスタンス化: クラスのインスタンス、つまりクラスの特定のオブジェクトを作成します。
  • メソッド: クラス内で定義された関数。
  • オブジェクト: クラスによって定義されたデータ構造のインスタンス。オブジェクトは、2 つのデータ メンバー (クラス変数とインスタンス変数) とメソッドで構成されます。

まず、宣言を通じてクラスを定義するステートメントを見てみましょう。

  1. クラス車両:
  2.  
  3. 合格

ターゲットはクラスのインスタンスであり、クラスの名前を使用してインスタンスを作成できます。

  1. 車 = 乗り物()
  2.  
  3. print(car) # <__main__.Vehicleインスタンス0x7fb1de6c2638>

上記のように、 car は Vehicle クラスのオブジェクトまたはインスタンスです。

車両クラスに、車輪の数、エネルギー貯蔵タイプ、座席数、最高速度という 4 つのプロパティがある場合は、車両クラスを作成するときにこれらのプロパティを設定できます。次に、クラスが初期化されるときに受け入れるデータを定義します。 self はクラスのインスタンスを表します。クラス メソッドを定義するときは self が必要ですが、それを呼び出すときに対応するパラメーターを渡す必要はありません。

  1. クラス車両:
  2.  
  3. def __init__(self, 車輪の数, タンクの種類, 座席数, 最大速度):
  4.  
  5. self.number_of_wheels = 車輪の数
  6.  
  7. self.type_of_tank = タンクの種類
  8.  
  9. self.seating_capacity = 座席数
  10.  
  11. 自己最大速度 = 最大速度

__init__() メソッドは、クラス コンストラクターまたは初期化メソッドと呼ばれる特別なメソッドで、これらの属性を定義するために車両クラスのインスタンスが作成されるときに呼び出されます。 Tesla Model S のオブジェクトを作成する場合、4 つの車輪、電動駆動、4 つの座席、最高速度 250 km/時という特性に基づいてオブジェクトを作成できます。

  1. tesla_model_s = 車両(4, '電動' , 5, 250)

すべてのプロパティが設定されましたが、その値にアクセスするにはどうすればよいでしょうか。オブジェクトに情報を送信するプロセスをメソッドと呼びます。これはオブジェクトの動作です。

  1. クラス車両:
  2.  
  3. def __init__(self, 車輪の数, タンクの種類, 座席数, 最大速度):
  4.  
  5. self.number_of_wheels = 車輪の数
  6.  
  7. self.type_of_tank = タンクの種類
  8.  
  9. self.seating_capacity = 座席数
  10.  
  11. 自己最大速度 = 最大速度
  12.  
  13. 定義: 車輪の数(自分):
  14.  
  15. self.number_of_wheelsを返す
  16.  
  17. 定義: 車輪の数を設定します(自分自身、数):
  18.  
  19. self.number_of_wheels = 数

上記のステートメントは、number_of_wheels と set_number_of_wheels の 2 つのメソッドを実装します。最初のメソッドはプロパティ値を取得し、2 番目のメソッドはプロパティに新しい値を設定するため、これを getter と setter と呼ぶことができます。クラス内では、def キーワードを使用してクラスのメソッドを定義します。一般的な関数定義とは異なり、クラス メソッドには最初のパラメーターであるパラメーター self を含める必要があります。

Python では、@property (デコレータ) を使用してゲッターとセッターを定義できます。

  1. クラス車両:
  2.  
  3. def __init__(self, 車輪の数, タンクの種類, 座席数, 最大速度):
  4.  
  5. self.number_of_wheels = 車輪の数
  6.  
  7. self.type_of_tank = タンクの種類
  8.  
  9. self.seating_capacity = 座席数
  10.  
  11. 自己最大速度 = 最大速度
  12.  
  13. @財産
  14.  
  15. 定義: 車輪の数(自分):
  16.  
  17. self.number_of_wheelsを返す
  18.  
  19. @number_of_wheels.setter
  20.  
  21. 定義 number_of_wheels(self, 数値):
  22.  
  23. self.number_of_wheels = 数

これらのメソッドを属性として使用することもできます。

  1. tesla_model_s = 車両(4, '電動' , 5, 250)
  2.  
  3. print(tesla_model_s.number_of_wheels) # 4
  4.  
  5. tesla_model_s.number_of_wheels = 2 #車輪数を2設定
  6.  
  7. print(tesla_model_s.number_of_wheels) # 2

これは、メソッドを属性として定義することとは少し異なります。上記のように、新しい車輪の数を設定するときに、パラメータとして「2」を設定する必要はなく、代わりに number_of_wheels の値を 2 に設定します。

メソッドを使用して他の操作を実行することもできます。たとえば、メソッド「make_noise」は次のように設定できます。

  1. クラス車両:
  2.  
  3. def __init__(self, 車輪の数, タンクの種類, 座席数, 最大速度):
  4.  
  5. self.number_of_wheels = 車輪の数
  6.  
  7. self.type_of_tank = タンクの種類
  8.  
  9. self.seating_capacity = 座席数
  10.  
  11. 自己最大速度 = 最大速度
  12.  
  13. def make_noise(self):
  14.  
  15. print( 'VRUUUUUUUM' )

このメソッドを呼び出すと、文字列「VRRRRUUUUM」が返されます。

  1. tesla_model_s = 車両(4, '電動' , 5, 250)
  2.  
  3. tesla_model_s.make_noise() # うわーん、すごい

カプセル化: 情報を隠す

カプセル化は、ターゲットのプロパティとメソッドへの直接アクセスを制限するメカニズムですが、同時にデータ (オブジェクト メソッド) に対する操作を容易にします。

カプセル化は、抽象関数インターフェースの実装の詳細をパッケージ化して隠す方法です。同時に、これは外部の呼び出し元がオブジェクトの内部実装の詳細にアクセスするのを防ぐ手段でもあります。この手段はプログラミング言語自体によって提供されます。

オブジェクトのすべての内部表現は外部から隠されており、オブジェクトのみが内部データと直接対話できます。まず、パブリックおよびプライベート (非パブリック) のインスタンス変数とメソッドを理解する必要があります。

パブリックインスタンス変数

Python クラスの場合、コンストラクター メソッドを使用してパブリック インスタンス変数を初期化できます。

  1. クラス Person:
  2.  
  3. def __init__(自分自身、first_name):
  4.  
  5. 自己名 = ファーストネーム

次に、first_name の値をパブリックインスタンス変数の引数として使用します。

  1. tk = 人( 'TK' )
  2.  
  3. print(tk.first_name) # => TK

カテゴリ内:

  1. クラス Person:
  2.  
  3. ファーストネーム = 'TK'  

これで first_name に値を割り当てる必要がなくなり、tk に割り当てられたすべてのオブジェクトにクラス属性が設定されます。

  1. tk = 人()
  2.  
  3. print(tk.first_name) # => TK

これで、パブリック インスタンス変数とクラス属性の使用方法を学習しました。さらに、パブリック部分の変数値を管理することもできます。つまり、オブジェクトはその変数の値(変数値の取得と設定)を管理できます。 Person クラスを保持したまま、 first_name 変数に別の値を割り当てます。

  1. tk = 人( 'TK' )
  2.  
  3. tk.first_name = 'カイオ'  
  4.  
  5. print(tk.first_name) # => カイオ

上記のように、first_nameインスタンス変数に別の値(kaio)を割り当てます。これはパブリック変数なので、変数値が更新されます。

プライベートインスタンス変数

パブリック インスタンス変数と同様に、コンストラクター メソッドを使用するか、クラス内で宣言することで、プライベート インスタンス変数を定義できます。構文上の違いは、プライベート インスタンス変数では変数名の前にアンダースコアが付くことです。

  1. クラス Person:
  2.  
  3. def __init__(自分自身、first_name、メールアドレス):
  4.  
  5. 自己名 = ファーストネーム
  6.  
  7. self._email = メールアドレス

上記で定義されたメール変数はプライベート変数です。

  1. tk = Person( 'TK' , 'tk@mail.com' )
  2.  
  3. print(tk._email) # tk@mail.com

アクセスして更新することはできますが、プライベート変数は API の非公開部分として考慮する必要があるという単なる慣例です。したがって、2 つのメソッドを使用してプライベート インスタンスの値を表示し、インスタンスの値を更新するなど、メソッドを使用してクラス定義内の操作を完了できます。

  1. クラス Person:
  2.  
  3. def __init__(自分自身、first_name、メールアドレス):
  4.  
  5. 自己名 = ファーストネーム
  6.  
  7. self._email = メールアドレス
  8.  
  9. def update_email(自分、新しいメールアドレス):
  10.  
  11. self._email = 新しいメールアドレス
  12.  
  13. defメール(自分):
  14.  
  15. self._emailを返す

これで、メソッドを使用してプライベート変数を更新またはアクセスできるようになりました。

  1. tk = Person( 'TK' , 'tk@mail.com' )
  2.  
  3. print(tk.email()) # => tk@mail.com
  4.  
  5. tk._email = 'new_tk@mail.com'  
  6.  
  7. print(tk.email()) # => tk@mail.com
  8.  
  9. tk.update_email( 'new_tk@mail.com' )
  10.  
  11. print(tk.email()) # => new_tk@mail.com

まず、Person クラスを初期化して値を割り当て、次に定義されたメソッドを通じてプライベート変数の値にアクセスして出力します。プライベート変数に新しい値を直接割り当てた場合、出力される値は元の値のままになります。プライベート変数を更新するには、クラスで定義されたメソッドを操作する必要があります。

パブリックメソッド

パブリック メソッドの場合は、クラス外から呼び出すこともできます。次のコードは、クラスとメソッドを定義します。

  1. クラス Person:
  2.  
  3. def __init__(自分、first_name、年齢):
  4.  
  5. 自己名 = ファーストネーム
  6.  
  7. self._age = 年齢
  8.  
  9. show_age(self)を定義します。
  10.  
  11. self._ageを返す

このメソッドをテストしてみましょう:

  1. tk = 人( 'TK' , 25)
  2.  
  3. print(tk.show_age()) # => 25

プライベートメソッド

しかし、これはプライベートメソッドでは不可能です。同じクラスを定義し、アンダースコアを使用して show_age をプライベート メソッドとして定義すると、次のようになります。

  1. クラス Person:
  2.  
  3. def __init__(自分、first_name、年齢):
  4.  
  5. 自己名 = ファーストネーム
  6.  
  7. self._age = 年齢
  8.  
  9. def _show_age(自分自身):
  10.   self._ageを返す

オブジェクトのプライベート メソッドを呼び出すこともできます。

  1. tk = 人( 'TK' , 25)
  2.  
  3. print(tk._show_age()) # => 25

アクセスして更新することもできますが、プライベート メソッドは API のプライベート部分として考慮する必要があります。次の例はその使用方法を示しています。

  1. クラス Person:
  2.  
  3. def __init__(自分、first_name、年齢):
  4.  
  5. 自己名 = ファーストネーム
  6.  
  7. self._age = 年齢
  8.  
  9. show_age(self)を定義します。
  10.  
  11. self._get_age()を返す
  12.  
  13. _get_age(自分自身)を定義します:
  14.  
  15. self._ageを返す
  16.  
  17. tk = 人( 'TK' , 25)
  18.  
  19. print(tk.show_age()) # => 25

上記のように、プライベート メソッド _get_age とパブリック メソッド show_age を宣言しました。 show_age メソッドはクラス外から呼び出すことができますが、_get_age メソッドはクラス内からのみ使用できます。

パッケージ概要

プログラムをカプセル化することで、オブジェクトの内部表現が外部から隠されることが保証されます。オブジェクト指向プログラミングの主な利点の 1 つはコードの再利用であり、この再利用を実現する方法の 1 つは継承です。継承は、クラス間の型とサブタイプの関係として完全に理解できます。

車があり、車輪の数、座席数、最高速度がわかっている場合、 Electric Car クラスは通常の Car クラスと同じプロパティを継承します。

  1. クラスカー:
  2.  
  3. def __init__(self, 車輪の数, 座席数, 最大速度):
  4.  
  5. self.number_of_wheels = 車輪の数
  6.  
  7. self.seating_capacity = 座席数
  8.  
  9. 自己最大速度 = 最大速度

クラス内のオブジェクトを更新します。

  1. 私の車 = 車(4, 5, 250)
  2.  
  3. print(my_car.車輪の数)
  4.  
  5. 印刷(my_car.座席容量)
  6.  
  7. 印刷(my_car.最大速度)

オブジェクトを初期化した後、Python は親クラスを子クラスのパラメータとして適用できます。したがって、Electric Car クラスは Car クラスからオブジェクトを継承できます。

  1. クラス ElectricCar(自動車):
  2.  
  3. def __init__(self, 車輪の数, 座席数, 最大速度):
  4.  
  5. Car.__init__(自己、車輪の数、座席数、最大速度)

ElectricCar クラスはすでに Car クラスからオブジェクトを継承しているので、他のメソッドを実装する必要はありません。

  1. 私の電気自動車 = 電気自動車(4, 5, 250)
  2.  
  3. print(my_electric_car.number_of_wheels) # => 4
  4.  
  5. print(my_electric_car.seating_capacity) # => 5
  6.  
  7. print(my_electric_car.maximum_velocity) # => 250

<<:  人工知能はあなたよりも多くの XXX スターを知っている

>>:  機械学習は、モノのインターネットの発展に欠かせない未来となるだろう

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

OpenAIが数学定理推論モデルGPT-fを初めてリリース、23の導出結果が専門データベースに収録

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

工場に産業用 IoT テクノロジーを導入する 5 つの理由

モノのインターネット(IoT)はどこにでもあります。実際、ここ数年、スマート製造、サプライ チェーン...

...

インタビュー必須:バックトラッキングアルゴリズムの詳細な説明

序文みなさんこんにちは。私はカタツムリを採っている小さな男の子です。 LeetCode を練習してい...

TCP/IPトランスポート層の輻輳制御アルゴリズムを理解する

この記事では、次の内容を学びます。 輻輳制御の概念とその背景 フロー制御と輻輳制御の違いと関係 輻輳...

AIと機械学習を活用して工場の安全を守る

自動化されたセキュリティの将来には機械学習が関与するでしょう。人工知能と機械学習の進歩により、ロボッ...

200語あれば本一冊分は読める。GPT-3はすでに小説の要約を書くことができる

[[425896]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

3400 コミ​​ットを統合します。バッチサイズの選択に役立つフレームワーク、PyTorch 1.10 がリリースされました

[[431318]] 10月21日の夜、ついにPyTorch 1.10がリリースされました!このアッ...

文字列マッチングのためのボイヤー・ムーアアルゴリズム

前回の記事では、KMPアルゴリズムを紹介しました。ただし、これは最も効率的なアルゴリズムではなく、実...

機械学習は、モノのインターネットの発展に欠かせない未来となるだろう

近年、機械学習ほどモノのインターネットの急速な成長を牽引したものはほとんどありません。人間の創造性を...

人気は高まり続け、医療AIは業界の爆発的な成長の重要なポイントに達している

現在、世界の注目は5Gに集中しているが、人工知能の発展も軽視できない。わが国では、継続的な優遇政策の...

医療画像のインテリジェント認識:医療とAIを組み合わせた成功事例

医療画像のインテリジェント認識:医療とAIを組み合わせた成功事例医療画像認識はAIがすぐに導入できる...

...