Pythonベース--クラス

3732 ワード

オブジェクト向け言語にはクラスがあります.
今日はPythonのクラスを簡単に共有し、C++のクラスと比較することに重点を置いています.
C++の親、Pythonのスーパークラス(superclass)
クラスの作成
class Person:

 def setName(self, name):
   self.name = name

 def getName(self):
   return self.name

 def greet(self):
   print "Hello, world! I'm %s. " % self.name

C++のthisキーワード、Pythonのselfキーワードはselfキーワードのほうがイメージ的です.
プロパティを通常の関数にバインドする
>>>class Class:
     def method(self):
       print 'I have a self!'

>>>def function():
     print "I don't..."

>>>instance = Class()
>>>instance.method()
I have a self!

>>>instance.method = function
>>>instance.method()
I don't...

プライベートPythonにはprivateキーワードはありません.変更方法や特性にかかわらず、名前の前に二重下線を付けるといいです.
class Secretive:
  def __inaccessible(self):
    print 'Bet you can't see me...'

スーパークラス、すなわちC++の親、継承を指定します.ここでは、使用するコロンではなく、サブクラスの後ろのカッコにスーパークラスを書きます.
class Filter:
  def init(self):
    self.blocked = []

class SPAMFilter(Filter):
  def init(self):
    self.blocked = ['SPAM']

チェック継承私の知る限りでは、C++では2つのクラスに親子関係があるかどうかを直接判断する方法はありません.Pythonには組み込み方法、issubclass関数があります.
>>>issubclass(SPAMFilter, Filter)
true

>>>issubclass(Filter, SPAMFilter)
false

唯一注意しなければならないのは、最初のパラメータがサブクラスであり、2番目のパラメータがスーパークラスであることです.
オブジェクトがクラスのインスタンスisinstanceメソッドであるかどうかを確認します.最初のパラメータはインスタンスで、2番目のパラメータはクラス名です.
複数のスーパークラス、つまり私たちのC++でいう多重継承、すなわちカッコにいくつかのクラスを書いて、真ん中をカンマで区切ります.