オブジェクト指向は、現在のプログラミング言語において非常に主流の考え方です。 Python はオブジェクト指向の非常に優れた実装を備えています。同時に、Python の柔軟な構文を利用して、いくつかの優れたオブジェクト指向機能を実装できます。
Python は最初からオブジェクト指向言語であり、そのため、Python でクラスやオブジェクトを作成するのは簡単です。この章では、Python によるオブジェクト指向プログラミングについて詳しく紹介します。
これまでオブジェクト指向プログラミング言語に触れたことがない場合は、まずオブジェクト指向言語のいくつかの基本的な機能を理解し、頭の中でオブジェクト指向の基本的な概念を形成する必要があるかもしれません。 Python でオブジェクト指向プログラミングをより簡単に学習できます。
次に、オブジェクト指向の基本的な特徴をいくつか簡単に理解しましょう。
オブジェクト指向について学ぶのが難しいのは、概念やその他の知識点ではなく、オブジェクト指向の考え方です。
オブジェクト指向の基本的な考え方は、カプセル化、継承、ポリモーフィズムです。
最初は継承です:
クラスを定義します:
コードは次のとおりです:
class Bird(object): have_feather = True way_of_reproduction = 'egg'
このクラスを呼び出します:
コードは次のとおりです:
summer = Bird() print summer.way_of_reproduction
Javaとは異なり、Pythonはnew toを必要としません。クラスをインスタンス化します。
同様に、Python クラスは以下のメソッドを定義できます:
コードは次のとおりです:
class Bird(object): have_feather = True way_of_reproduction = 'egg' def say(self, word='hi hi'): print 'i say :' + word
すべてのクラス関数には少なくとも 1 つのパラメーターが必要であり、このパラメーターは self である必要があることに注意してください。
クラス外の関数にはこの制限はありません。
コードは次のとおりです:
chk = Chicken() print chk.have_feather print chk.sat('hello')
__init__()メソッド
__init__()は特別なメソッドです。 Python には特別なメソッドがいくつかあり、Python はそれらを特別な方法で処理します。特殊なメソッド名は、前後に 2 つのアンダースコアがあることが特徴です。
__init__() メソッドの特別な点は、このメソッドをクラスで定義すると、このクラスに基づいてオブジェクトを作成すると、Python が自動的にこのメソッドを呼び出すことです (このプロセスは初期化とも呼ばれます)。
例:
コードは次のとおりです:
class happyBird(Bird): def __init__(self,more_words): print 'We are happy birds.',more_words hb = happyBird('Happy,Happy!')
親クラスメソッドのオーバーロード:
コードは次のとおりです:
class Hello(object): name = 'hello' def __init__(self): self.name='my name is hello' #类中的参数必须带有self参数 def sayhi(self): print 'hi you' class World(Hello): def __init__(self): #这里访问的是父类初始化的变量名 print 'before:',Hello.name super(World,self).__init__() #由于调用了父类的初始化构造函数,继承了父类的变量的改变 print 'after:',self.name #近似于方法重载 def sayhi(self,word='baby'): #调用父类sayhi方法 super(World,self).sayhi() print 'hi '+word def sayWorld(self): print 'hi,hello world' if __name__ == '__main__': c = World() c.sayhi() c.sayWorld()
また、Pythonでは多重継承が可能ですが、これは非常に危険です。安易に使用しないことをお勧めします。
Python のポリモーフィズムについては、JavaScript と同様に、インターフェイスや型変換を使用せずに、オブジェクトのプロパティに直接アクセスできます。
型判定には、ある関数のサブクラスかどうかを判定する type() 関数と isinstance() 関数があります。
次のようにコードをコピーします:
isinstance(object, classinfo)
インスタンスがこのクラスであるか、オブジェクトが変数であるかを判断します
classinfoは型(tuple、dict、int、float)です
どちらかを判断します変数はこの型です
コードは次のとおりです:
class objA: pass A = objA() B = 'a','v' C = 'a string' print isinstance(A, objA) print isinstance(B, tuple) print isinstance(C, basestring)
出力結果:
True
True
True
以上がPython オブジェクト指向のビデオ素材共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。