Python-4入門:クラスとオブジェクト

クラスとオブジェクト

オブジェクト指向プログラミングは、最も効果的なソフトウェア作成方法の1つです。オブジェクト指向プログラミングでは、現実世界の物事や状況を表すクラスを作成し、これらのクラスに基づいてオブジェクトを作成します。オブジェクトはPythonで遍在していると言えます。オブジェクトは、コードを使用して現実の世界をシミュレートします。オブジェクト=属性+メソッド、オブジェクトの特性は「属性」と呼ばれ、オブジェクトの動作は「メソッド」と呼ばれます。

クラスの作成方法を学ぶ:

クラスで関数を作成する際の違いは、自己を追加することです。pythonのクラスは、無数のオブジェクトを生成できます。オブジェクトのメソッドが呼び出されると、オブジェクトは独自の参照を最初のパラメーターとしてメソッドに渡します。 。

>>> classBALL:...     def setname(self,name):...         self.name=name
...  def kick(self):...print('my name is %s, oh,who kick me?'%self.name)...>>> a=BALL()>>> a.setname('tom')>>> a.kick()
my name is tom, oh,who kick me?
Pythonの魔法の広場
>>> classDog():...     def __init__(self,name,age):...         self.name=name
...   self.age=age
...  def sit(self):...print(self.name.title()+' is now sitting')...     def grow(self):...print(self.name.title()+' is '+str(self.age)+' years old')...>>> a=Dog('Tom',6) ####着信パラメータ名,age
>>> a.sit() ###渡されたパラメータを直接呼び出す
Tom is now sitting
>>> a.grow()
Tom is 6 years old

クラスを使用

車のクラスを定義します:

>>> classCar:...     def __init__(self,make,model,year):...         self.make=make
...   self.model=model
...   self.year=year
...  def get_descriptive(self):...print(self.year+self.model+self.make)...>>> mycar=Car('China','ak','2018')>>> mycar.get_descriptive()
2018 akChina

デフォルト値を属性に割り当てます

classCar:
 def __init__(self,make,model,year):
  self.make=make
  self.model=model
  self.year=year
  self.odo=0
 def get_descriptive(self):print(self.year+ self.model+ self.make)
 def odometr(self):print("this car has "+str(self.odo)+" miles on it")>>> mycar=Car('China','ak','2020')>>> mycar.odometr()this car has 0 miles on it ###デフォルトのパラメータはゼロなので、結果はゼロです

属性の値を変更します

属性の値を直接変更します
>>> mycar=Car('china','ak','2010')>>> mycar.odo=23 ###直接変更し、pythonにインスタンス内で直接属性odoを見つけさせ、23に変更します。>>> mycar.odometr()this car has 23 miles on it

メソッドを使用して属性の値を変更します
>>> classCar:...     def __init__(self,make,model,year):...         self.odo=0...print(self.year+ self.model+ self.make)...print("this car has "+str(self.odo)+" miles on it")...     def updataodo(self,mileage): ####入力パラメータが元のデフォルト値になるように、その中にオブジェクトを再作成します
...   self.odo=mileage
>>> mycar=Car('china','ak','2020')>>> mycar.updataodo(56)>>> mycar.odometr()this car has 56 miles on it

継承

クラスが別のクラスを継承すると、他のクラスのすべての属性とメソッドが自動的に取得されます。すべてのクラスは親クラスと呼ばれ、新しいクラスはサブクラスと呼ばれます。簡単な例

>>> classParent():...     def hello(self):...print("親クラスのメソッドを呼び出す")...>>>classson(Parent):...     pass
...>>> a=son()>>> a.hello()
親クラスのメソッドを呼び出す

複雑な例

>>> classelectric(Car):
 pass

>>> classmoto(Car):
 def __init__(self,shape):
  self.shape=shape
 def getshape():print('moto is '+ self.shape)>>> mycar=electric('china','ak','2010')>>> mycar.get_descriptive()
2010 akchina
>>> classmoto(Car):...     def __init__(self):...         pass
...>>> mycar=moto('china','ak','2010')Traceback(most recent call last):
 File "<stdin>", line 1,in<module>
TypeError:__init__() takes 1 positional argument but 4 were given

この例では、motoの定義時にエラーが報告されたことがわかります。これは、マジックスクエア_init_が内部で書き直され、新しい_init_が親クラスの属性を初期化しなかったためです。スーパー関数は、pythonが親クラスとサブクラスを関連付けるのに必要です。次のように:

>>> classmoto(Car):...     def __init__(self,make,model,year):...super().__init__(make,model,year)...>>> my=moto('china','ak','2010')>>> my.get_descriptive()
2010 akchina

属性shapeがサブクラスに追加されます。これは、getshapeを追加するメソッドに対応します。

>>> classmoto(Car):...     def __init__(self,make,model,year,shape):...super().__init__(make,model,year)...         self.shape=shape
...  def getshape(self):...print('moto is '+ self.shape)...>>> a =moto('cn','x','2020','sda')>>> a.getshape()
moto is sda

クラスのインポート

上で書いたクラスはclass.pyという名前のファイルに保存され、注釈情報をファイルに追加できます。この保存方法は、ファイルをモジュールに保存し、クラスimportCarから使用するときにモジュールをインポートすることです。

1つのモジュールに複数のクラスを格納したり、モジュール全体を直接インポートしたり、インポートクラスclass.Carclass.motoで必要なクラスを呼び出すためのピリオド表記を追加したりすることもできます。

Recommended Posts

Python-4入門:クラスとオブジェクト
Python(18)入門
Python(9)入門
Python(8)入門
Python(4)入門
Python入門(2)
python-1入門
Python(14)入門
Python(7)の使用を開始する
Python(17)入門
Python(15)入門
Python(10)入門
Python(11)入門
Python(6)入門
Python(3)入門
Python(12)入門
Python(5)入門
Python入門(18歳以上)
Python(13)入門
Python(16)入門
python-2入門:関数と辞書
PythonでNumpyを使い始める
04.Python入門の条件付きステートメント
Ubuntuを使い始める
はじめにpython学習手順
株で遊んでPythonを学んだ
Pythonをすばやく開始する方法
Python and Go
Pythonでファイルを読み書きする方法
Pythonの内省と考察
ヘッダー付きのpythonrequests.get
PythonでWeChatを再生する
[python] ubuntuの下のpython2とpython3
PythonによるWebスクレイピング
Pythonの分解とパッケージ化
Python3の構成とentry.md