ホームページ  >  記事  >  バックエンド開発  >  Pythonのクラスインスタンス解析の詳しい解説

Pythonのクラスインスタンス解析の詳しい解説

高洛峰
高洛峰オリジナル
2017-03-26 10:04:121806ブラウズ

この記事では主に python クラスの詳細とサンプルに関する関連情報を紹介します。必要な方は

class

1 を参照してください。例を作成します。 (通常、クラスはデータとそのデータで使用できるメソッドをカプセル化します)

2. Python クラスは呼び出し可能な

オブジェクト

、つまりクラス オブジェクト

3. クラスは通常、モジュールの最上位で定義されます。そのため、クラスが定義されているソース コード ファイル内のどこにでもクラス インスタンスを作成できます。

4. インスタンスの初期化

instance =
    Class
  1. Name(args....)

    クラスはインスタンス化するときに、2 つの特別なメソッド init と del を使用できます。
  2.  class ClassName(base):
    'class documentation string' #类文档字符串
     class suite        #类体
base: スーパークラスは、
    継承
  1. のための 1 つ以上の親クラスのコレクションです。クラス本体には、宣言ステートメント、クラス メンバー定義、データ
  2. 属性
  3. 、メソッド

    を含めることができます。

    クラスに継承関係がない場合、括弧内のベースは提供されません
  4.  class FirstClass():
      spam = 30    #类数据属性
      def display(self): #类方法
       print self.spam
     x = FirstClass()   #创建类实例
     x.display()     #方法调用
     >>> 30
     dir(FirstClass)
     >>> ['doc', 'module', 'display', 'spam']
classステートメントはdefに似ており、classステートメントが実行されるまでクラスは作成されません。が実行されます
  • クラスステートメントでは、任意の代入ステートメントがクラス属性を作成します
  • 各インスタンスオブジェクトはクラスの属性を継承し、独自の名前空間を取得します
  • Pythonクラスメソッドと呼び出し

インスタンス (オブジェクト) に含まれる属性

呼び出し可能なプロパティ: メソッド

  • データプロパティ

  • OOP では、インスタンスは「データ」を持つレコードのようなもので、クラスはこれらのレコードを処理する「プログラム」です。

インスタンス経由 メソッドの呼び出しは、現在のインスタンスを処理するクラスのメソッドの呼び出しと同じです。 たとえば、前のコード例では、x.display() は FirstClass.display(x) に自動的に変換されます。つまり、インスタンス x

  • を処理するためにクラスのメソッドが呼び出されます。クラスには self パラメータが必要です。これには現在のインスタンスの意味が暗黙的に含まれます

  • メソッド内で self 属性を割り当てると、各インスタンスに独自の属性が生成されます

  • Python では、インスタンスがない場合、メソッドは次のように規定されていますこれは「バインディング」です) の概念です

  • class ステートメント内の代入ステートメントは、前の例のスパムなどのクラス属性を作成します

  • メソッドに渡される特別なパラメーター self を割り当てます。クラスメソッド内でインスタンス属性が作成されます

  • Python コンストラクター

インスタンスを作成するとき、Python はクラス内の init メソッドを自動的に呼び出して、インスタンスに目に見えない属性を提供します

init メソッドは と呼ばれますconstructor

  1. クラスにinitメソッドが定義されていない場合、インスタンスは最初は単純な名前空間として作成されます。

  2. init の最初のパラメータは self である必要があります。self

    変数
  3. は、クラス インスタンス メソッドでメソッドがバインドされているインスタンスを参照するために使用されます。メソッドのインスタンスは常にメソッド呼び出しの最初の引数として渡されるため、インスタンスを表すために self が選択されました。メソッド宣言には self を含める必要がありますが、インスタンス (self) なしでメソッドを使用することもできます。メソッドで self を使用しない場合は、特別な理由がない限り、通常の
  4. 関数

    を作成することを検討してください。結局のところ、メソッド コードはインスタンスを使用しておらず、クラスに関連付けられた機能もないため、通常の関数のように見えます。他のオブジェクト指向言語では、self はこれと呼ばれる場合があります。

  5. init はオブジェクトを返すことができません
  • destructor
  • : del
  • constructor
  • が必要ですが、デストラクターは多くの場合無視できます (Python インタープリターはそれ自体をリサイクルします)
class MyClass():
 def init(self, name):
  self.name = name
  print 'My name is ' + self.name
 def del(self):
  print self.name + ' is dead.'
i1 = MyClass('Shaw')
>>> My name is Shaw
del i1
>>> Shaw id dead.

类的特殊属性

  • 使用dir()或dict,查看类或实例的属性

  • doc:获取文档字符串

  • base:获取所有父类

  • module:类所在的模块

  • name:实例所属类的名字

Python类方法中可用的变量

  • 实例变量:self.变量名

  • 局部变量:方法内部创建的变量,可直接使用

  • 静态变量:类中定义的变量。类名.变量名

  • 全局变量:直接使用

继承

继承描述了基类的属性如何‘遗传'给派生类

  1. 子类可以继承他的基类的任何属性,包括数据属性和方法

  2. 一个未指定基类的类,其默认有一个叫object的基类

  3. Python允许多重继承(可以继承多个父类)

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上がPythonのクラスインスタンス解析の詳しい解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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