ホームページ >バックエンド開発 >Python チュートリアル >Zhonggu Education Python ビデオ チュートリアル リソースの推奨事項

Zhonggu Education Python ビデオ チュートリアル リソースの推奨事項

黄舟
黄舟オリジナル
2017-09-01 14:22:051684ブラウズ

「Zhonggu Education Python Video Tutorial」は、Python 言語の特徴と適用範囲、Python の基本的なデータ型、条件判定とループ、関数、Python 独自のスライスとリストの生成式を紹介する Python 開発の入門チュートリアルです。 。この Python チュートリアルを読んですぐに始めて、簡単な Python プログラムを作成できるようになれば幸いです。

Zhonggu Education Python ビデオ チュートリアル リソースの推奨事項

コース再生アドレス: http://www.php.cn/course/501.html

先生の教え方:

先生の講義はシンプルで奥深く、わかりやすいです論理的思考力を使用して生徒の注意を引き、理性を使用して教室での指導プロセスを制御することで、層ごとに連動し、厳密な議論と厳密な構造を組織化して分析します。教師の講義を聞くことで、学生は知識を学ぶだけでなく、思考のトレーニングも受け、教師の厳格な学問的態度に影響され、影響を受けます

このビデオのより難しい部分はオブジェクト指向、つまりクラスとオブジェクトです。

Python ではすべてがオブジェクトです。クラスは、新しいタイプのオブジェクトを作成するメカニズムを提供します。このチュートリアルでは、クラスとオブジェクト指向プログラミングの基本的な知識については説明しませんが、Python オブジェクト指向プログラミングをより深く理解することに重点を置きます。オブジェクトの親クラスから継承する新しいスタイルの Python クラスを使用するとします。
クラスを定義する

クラス ステートメントでは、クラスのインスタンス オブジェクトによって共有される一連の属性、変数、メソッドを定義できます。簡単なクラス定義を以下に示します。

class Account(object):
  num_accounts = 0
  
  def __init__(self, name, balance):
   self.name = name
   self.balance = balance
   Account.num_accounts += 1
  
  def del_account(self):
   Account.num_accounts -= 1
  
  def deposit(self, amt):
   self.balance = self.balance + amt
  
  def withdraw(self, amt):
   self.balance = self.balance - amt
  
  def inquiry(self):
   return self.balance


クラス定義では、次の新しいオブジェクトが導入されます:

クラス オブジェクト
インスタンス オブジェクト
メソッド オブジェクト

クラス オブジェクト

プログラムの実行中にクラス定義が見つかったとき, すべてのクラス変数とメソッド定義の名前バインディングを含む新しい名前空間が作成されます。この名前空間は、クラス メソッドが使用できる新しいローカル スコープを作成しないため、メソッド内の変数にアクセスするには完全修飾名が必要であることに注意してください。前のセクションの Account クラスは、この機能を示しています。num_of_accounts 変数にアクセスしようとするメソッドは、完全修飾名 Account.num_of_accounts を使用する必要があります。そうでない場合、完全修飾名が __init__ メソッドで使用されない場合、次のエラーが発生します。 raise:

class Account(object):
 num_accounts = 0
  
 def __init__(self, name, balance):
  self.name = name
  self.balance = balance
  num_accounts += 1
  
 def del_account(self):
  Account.num_accounts -= 1
  
 def deposit(self, amt):
  self.balance = self.balance + amt
  
 def withdraw(self, amt):
  self.balance = self.balance - amt
  
 def inquiry(self):
  return self.balance
  
>>> acct = Account('obi', 10)
Traceback (most recent call last):
 File "python", line 1, in <module>
 File "python", line 9, in __init__
UnboundLocalError: local variable &#39;num_accounts&#39; referenced before assignment

クラス定義の実行の最後に、クラス オブジェクトが作成されます。クラス定義を入力する前に有効であったスコープが復元され、クラス オブジェクトはクラス定義ヘッダーのクラス名にバインドされます。

最初に本題から逸れますが、作成されたクラスはオブジェクトなのか、ではそのオブジェクトのクラスは何なのか、と疑問に思うかもしれません。 。すべてはオブジェクトであるという Python の哲学に従って、クラス オブジェクトにはクラスがあり、これが Python の新しいスタイル クラスの型クラスです。

>>> type(Account)
<class &#39;type&#39;>

もう少し混乱させるために、アカウントの種類の種類は type です。 type クラスは、チュートリアルの後半で紹介する他のクラスを作成するために使用されるメタクラスです。

クラスオブジェクトは属性の参照とインスタンス化をサポートします。プロパティは、標準のドット構文、つまりオブジェクトの後にピリオドが続き、その後にプロパティ名が続く obj.name を介して参照されます。有効なプロパティ名は、クラス オブジェクトの作成後にクラス名前空間に表示されるすべての変数名とメソッド名です。例:

>>> Account.num_accounts
>>> 0
>>> Account.deposit
>>> <unbound method Account.deposit>

クラスのインスタンス化では関数表記を使用します。インスタンス化は、以下の Account クラスなど、通常の関数と同様にパラメーターなしでクラス オブジェクトを呼び出します。

>>> Account()

クラス オブジェクトがインスタンス化された後、クラスに __init__ メソッドが定義されている場合、インスタンス オブジェクトが返されます。インスタンスオブジェクトが最初のパラメータとして渡されます。このメソッドは、インスタンス変数の初期化など、ユーザー定義の初期化プロセスを実行します。たとえば、Account クラスの場合、口座名と残高が設定され、インスタンス オブジェクトの数が 1 つ増加します。
インスタンス オブジェクト

クラス オブジェクトがクッキー カッターの場合、クッキーはクラス オブジェクトをインスタンス化した結果です。インスタンス オブジェクトに対するすべての有効な操作は、プロパティ、データ、およびメソッド オブジェクトへの参照です。
メソッド オブジェクト

メソッド オブジェクトは関数オブジェクトに似ています。 x が Account クラスのインスタンスの場合、x.deposit はメソッド オブジェクトの例です。メソッド定義には追加パラメータ self があります。 self はクラスインスタンスを指します。なぜインスタンスをパラメータとしてメソッドに渡す必要があるのでしょうか?メソッド呼び出しが最もよく分かります:

>>> x = Account()
>>> x.inquiry()
10

インスタンス メソッドが呼び出されると何が起こるでしょうか?メソッド定義には self パラメーターが含まれていますが、x.inquiry() はパラメーターなしで呼び出されることに注意してください。では、このパラメータでは一体何が起こっているのでしょうか?

特別なことは、メソッドによって作用されるオブジェクトが関数の最初のパラメーターとして渡されることです。この例では、x.inquiry() の呼び出しは Account.f(x) と同等です。一般に、n 個のパラメータを指定してメソッドを呼び出すことは、メソッドのアクション オブジェクトを最初のパラメータ位置に挿入することと同じです。

以上がZhonggu Education Python ビデオ チュートリアル リソースの推奨事項の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。