0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

python研修の振り返り②

Posted at

python研修を終えたので、その備忘録としてメモ書きをしていきたい。
前回の①に続く形となります。
混乱しやすいところを中心に書きます。
誤りなどがあれば指摘いただければと思います

#エラーと例外処理

error.py
my_list = [1,2,3]
my_list[4]

print("hello")
-----
IndexError  Traceback (most recent call last)
<ipython-input-3-edac7686cc0b> in <module>()
      1 my_list = [1,2,3]
----> 2 my_list[4]
      3 
      4 print("hello")

IndexError: list index out of range
error2.py
my_list = [1,2,3]

try:
  my_list[4]
except:
  print("error")
print("hello")
----
error
hello

try~exceptを使用することで'error.py'ではエラーが返されたが、2つ目ではエラーが帰ってこず最後の"hello"が出力されていることが確認できる。エラー部分はexceptで処理が行われており、"error"が出力されている。

エラー処理.py
try:
 実行したい処理
except:
 エラー時の処理

以下でエラー処理の例をもう1つ挙げておく。

error3.py
try:
  r = 4/0
  print(r)
except ZeroDivisionError as err:
  print("error: ", err)
else:
  print("there's no error")
finally:
  print("all are done")

print("hello")
----
error:  division by zero
all are done
hello

上記のコードをみると4/0のため"0で割ることができない"というエラーが返ってくるはずである。そのためexceptではこのエラーが返ってきた時、エラーを出力するようにしている。もしエラーが返ってこなければelse文以下が出力される。最後のfinallyはエラーが起きても起こらなくても出力がなされる。

#クラス
クラスが自分(プログラミング初学者)にとって最も理解しづらかったところであった。自分は"同じものを何回も使い回すことができる便利なもの"と解釈している。
簡単な例を以下に示す。

class.py
class food():
  def __init__(self, menu):
    self.menu = menu

mesi = food("rise")
main = food("meet")
drink = food("milk")

print(mesi.menu)
print(main.menu)
print(drink.menu)
----
rise
milk
meet
class2.py
class greeting():
  def say_hello(self):
    print("hello")

Hi = greeting()
Hi.say_hello()
----
hello

def()内にある引数selfは慣習的なものらしい。ないとダメなようなので記載している。またclass.pyからわかるように「.」をつけることで、その内容にアクセスすることができる。また"__init __”は初期化メソッドであり必ず実行されるものである。

car.py
class Car():
  def __init__(self, model ="None"): #modelの初期名はなし
    self.model = model
  
  def run(self):
    print("run")

class Toyota(Car):
  def run(self):
    print("fast")

class Tesla(Car): #Teslaの時のみmodelを先に宣言する
  def __init__(self, model="model S"):
    self.model = model

  def run(self):
    print("super fast")
  
  def auto_run(self):
    print("auto_run")

car = Car()
car.run()
print("----------")
toyota_car = Toyota("Lexus")
print(toyota_car.model)
toyota_car.run()
print("----------")
tesla_car = Tesla()
print(tesla_car.model)
tesla_car.run()
tesla_car.auto_run()
----
run
----------
Lexus
fast
----------
model S
super fast
auto_run

長々となってしまったが、ToyotaおよびTeslaの括弧の中のCarについて注目したい。各々はCarの特徴を受け取っており(今回であればmodel)、Toyota内でmodelの定義をしなくても、Carの特徴を引き継いでいることがわかると思う。

クラスに関して言えば自分の中で言語化できていないぶん、まだ理解しているとは言い難いのだとわかった。

研修におけるpythonの文法で気をつけなければいけないと思ったことは以上である。

最後までお付き合いいただきありがとうございました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?