Pythonベース--クラス
オブジェクト向け言語にはクラスがあります.
今日はPythonのクラスを簡単に共有し、C++のクラスと比較することに重点を置いています.
C++の親、Pythonのスーパークラス(superclass)
クラスの作成
C++のthisキーワード、Pythonのselfキーワードはselfキーワードのほうがイメージ的です.
プロパティを通常の関数にバインドする
プライベートPythonにはprivateキーワードはありません.変更方法や特性にかかわらず、名前の前に二重下線を付けるといいです.
スーパークラス、すなわちC++の親、継承を指定します.ここでは、使用するコロンではなく、サブクラスの後ろのカッコにスーパークラスを書きます.
チェック継承私の知る限りでは、C++では2つのクラスに親子関係があるかどうかを直接判断する方法はありません.Pythonには組み込み方法、issubclass関数があります.
唯一注意しなければならないのは、最初のパラメータがサブクラスであり、2番目のパラメータがスーパークラスであることです.
オブジェクトがクラスのインスタンスisinstanceメソッドであるかどうかを確認します.最初のパラメータはインスタンスで、2番目のパラメータはクラス名です.
複数のスーパークラス、つまり私たちのC++でいう多重継承、すなわちカッコにいくつかのクラスを書いて、真ん中をカンマで区切ります.
今日は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++でいう多重継承、すなわちカッコにいくつかのクラスを書いて、真ん中をカンマで区切ります.