[ 1分は、Pythonを学ぶために|オブジェクト指向(http://mp.weixin.qq.com/s?__biz=MzU2NTczODU3NA==&mid=2247489693&idx=2&sn=c06ae3c0aa4e8a0fb092f9e32fa1797f&chksm=fcb675bccbc1fcaa2b95a6c2da99705df2bda0aa9d0cc22e05b3370e133f68d4e2c86a5f186c&scene=21#wechat_redirect)](上)は、最後に続きますPythonのオブジェクト指向の学習を続ける
クラス内で、** def **キーワードを使用してメソッドを定義します。これは、一般的な関数定義とは異なります。
# クラス定義
classpeople:
# 基本的な属性を定義する
name =''
age =0
# プライベート属性を定義する,クラス外から直接プライベートプロパティにアクセスすることはできません
__ weight =0
# 工法を定義する
def __init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):print("%sは言う:私%d歳。"%(self.name,self.age))
# インスタンス化されたクラス
p =people('ming',10,30)
p.speak()
上記のプログラムの出力は次のとおりです。
ミンは言う:私は10歳です。
Pythonはクラスの継承もサポートしています。言語が継承をサポートしていない場合、クラスには意味がありません。派生クラスの定義は次のとおりです。
classDerivedClassName(BaseClassName1):<statement-1>...<statement-N>
BaseClassName(例では基本クラス名)は、派生クラスのスコープで定義する必要があります。クラスに加えて、式を使用することもできます。これは、基本クラスが別のモジュールで定義されている場合に非常に役立ちます。
classDerivedClassName(modname.BaseClassName):
# クラス定義
classpeople:
# 基本的な属性を定義する
name =''
age =0
# プライベート属性を定義する,クラス外から直接プライベートプロパティにアクセスすることはできません
__ weight =0
# 工法を定義する
def __init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):print("%sは言う:私%d歳。"%(self.name,self.age))
# 単一継承の例
classstudent(people):
grade =''
def __init__(self,n,a,w,g):
# 親クラスコンストラクターを呼び出す
people.__init__(self,n,a,w)
self.grade = g
# 親クラスのメソッドをオーバーライドします
def speak(self):print("%sは言う:私%d歳、私は読んでいます%dグレード"%(self.name,self.age,self.grade))
s =student('ken',10,60,3)
s.speak()
上記のプログラムの出力は次のとおりです。
ケンは言う:私は10歳で、3年生です。
Pythonでは、複数の継承フォームのサポートも制限されています。複数継承のクラス定義は次のとおりです。
classDerivedClassName(Base1, Base2, Base3):<statement-1>...<statement-N>
括弧内の親クラスの順序に注意する必要があります。親クラスのメソッド名が同じで、サブクラスの使用時に指定されていない場合、pythonは左から右に検索します。つまり、メソッドがサブクラスに見つからない場合は、左から右に検索します。親クラスにメソッドが含まれているかどうか。
# クラス定義
classpeople:
# 基本的な属性を定義する
name =''
age =0
# プライベート属性を定義する,クラス外から直接プライベートプロパティにアクセスすることはできません
__ weight =0
# 工法を定義する
def __init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):print("%sは言う:私%d歳。"%(self.name,self.age))
# 単一継承の例
classstudent(people):
grade =''
def __init__(self,n,a,w,g):
# 親クラスコンストラクターを呼び出す
people.__init__(self,n,a,w)
self.grade = g
# 親クラスのメソッドをオーバーライドします
def speak(self):print("%sは言う:私%d歳、私は読んでいます%dグレード"%(self.name,self.age,self.grade))
# 別のクラス、複数の継承の前の準備
classspeaker():
topic =''
name =''
def __init__(self,n,t):
self.name = n
self.topic = t
def speak(self):print("私の名前は%s、私はスピーカーです、そして私のスピーチのトピックは%s"%(self.name,self.topic))
# 複数の継承
classsample(speaker,student):
a =''
def __init__(self,n,a,w,g,t):
student.__init__(self,n,a,w,g)
speaker.__init__(self,n,t)
test =sample("Tim",25,80,4,"Python")
test.speak() #メソッド名は同じであり、デフォルトでは、親クラスのメソッドが括弧内で最初に呼び出されます。
上記のプログラムの出力は次のとおりです。
私の名前はティムです。私はスピーカーです。私のスピーチのトピックはPythonです。
私はクルスです
WeChatに参加して交換し、よりエキサイティングな記事を読むことを学ぶことを歓迎します。あなたは私をフォローすることができます!
パブリックアカウントをフォローし、「pdf」と返信してください
オリジナルのDjangoとフラスコのチュートリアルのフルセットを受け取るルーチンはありません⬇️
Recommended Posts