Pythonの基礎知識(七):類、対象と魔法の方法
15164 ワード
クラスとオブジェクト
1.オブジェクト=属性+メソッド
オブジェクトはクラスのインスタンスです.すなわち、クラスは主にオブジェクトの構造を定義し、クラスをテンプレートとしてオブジェクトを作成します.クラスには、メソッド定義だけでなく、すべてのインスタンスが共有するデータも含まれます.パッケージ:情報隠蔽技術は、キーワード 継承:子クラスが親クラス間のデータとメソッドを自動的に共有するメカニズム【例】 マルチステート:異なるオブジェクトが同じ方法に対して異なる行動に応答する[例]
2.selfとは何ですか.
Pythonの
クラスのメソッドは、通常の関数とは特別な違いしかありません.通常、
3.Pythonの魔法の方法
Pythonのオブジェクトは生まれながらにしていくつかの不思議な方法を持っていて、それらはオブジェクト向けのPythonのすべてです...それらはあなたのクラスに魔力を加えることができる特殊な方法です...もしあなたのオブジェクトがこれらの方法のいずれかを実現したら、この方法は特殊な状況の下でPythonに呼び出されます.これらはすべて自動的に発生します...クラスには
1.オブジェクト=属性+メソッド
オブジェクトはクラスのインスタンスです.すなわち、クラスは主にオブジェクトの構造を定義し、クラスをテンプレートとしてオブジェクトを作成します.クラスには、メソッド定義だけでなく、すべてのインスタンスが共有するデータも含まれます.
class
を使用してPythonクラスを定義することができ、キーワードの後ろにはクラスの名前、セミコロン、クラスの実装が続く.【例】class Turtle: # Python
""" """
#
color = 'green'
weight = 10
legs = 4
shell = True
mouth = ' '
#
def climb(self):
print(' ...')
def run(self):
print(' ...')
def bite(self):
print(' !!')
def eat(self):
print(' , ...')
def sleep(self):
print(' , , ,zzz')
tt = Turtle()
print(tt)
# <__main__.turtle object="" at=""/>
print(type(tt))
#
print(tt.__class__)
#
print(tt.__class__.__name__)
# Turtle
tt.climb()
# ...
tt.run()
# ...
tt.bite()
# !!
# Python 。 type
print(type(Turtle))
#
class MyList(list):
pass
lst = MyList([1, 5, 2, 7, 8])
lst.append(9)
lst.sort()
print(lst)
# [1, 2, 5, 7, 8, 9]
class Animal:
def run(self):
raise AttributeError(' ')
class People(Animal):
def run(self):
print(' ')
class Pig(Animal):
def run(self):
print('pig is walking')
class Dog(Animal):
def run(self):
print('dog is running')
def func(animal):
animal.run()
func(Pig())
# pig is walking
2.selfとは何ですか.
Pythonの
self
はC++のthis
ポインタに相当する.【例】class Test:
def prt(self):
print(self)
print(self.__class__)
t = Test()
t.prt()
# <__main__.test object="" at=""/>
#
クラスのメソッドは、通常の関数とは特別な違いしかありません.通常、
self
という名前の2つ目のパラメータ名(インスタンス、すなわちオブジェクト自体に対応する)が追加されなければなりません.メソッドを呼び出すとき、パラメータself
に対応するパラメータを明確に提供する必要はありません.【例】class Ball:
def setName(self, name):
self.name = name
def kick(self):
print(" %s, , ..." % self.name)
a = Ball()
a.setName(" A")
b = Ball()
b.setName(" B")
c = Ball()
c.setName(" C")
a.kick()
# A, , ...
b.kick()
# B, , ...
3.Pythonの魔法の方法
Pythonのオブジェクトは生まれながらにしていくつかの不思議な方法を持っていて、それらはオブジェクト向けのPythonのすべてです...それらはあなたのクラスに魔力を加えることができる特殊な方法です...もしあなたのオブジェクトがこれらの方法のいずれかを実現したら、この方法は特殊な状況の下でPythonに呼び出されます.これらはすべて自動的に発生します...クラスには
__init__(self[, param1, param2...])
という魔法の方法があります.この方法はクラスがインスタンス化されると自動的に呼び出されます.【例】class Ball:
def __init__(self, name):
self.name = name
def kick(self):
print(" %s, , ..." % self.name)
a = Ball(" A")
b = Ball(" B")
c = Ball(" C")
a.kick()
# A, , ...
b.kick()
# B, , ...