LoginSignup
3
2

More than 1 year has passed since last update.

初学者がPythonについてまとめる

Last updated at Posted at 2021-09-13

はじめに

プログラミング初学者が自分なりにPythonについてまとめてみた。
もし間違っていることを書いているようならご指摘いただけると幸いです。

Pythonとは

Pythonはオブジェクト指向プログラミング言語と呼ばれており、少ないコードで簡潔にプログラムを書ける。
公式ドキュメント
スクリーンショット (27).png

Pythonでできること

  • AI(機械学習・深層学習)
  • Webサイト作成
  • ゲーム制作
  • Web上の情報収集ツール(スクレイピング)
  • データ処理・分析・解析

使用例

公式サイトから引用

  • YouTube
    "Python is fast enough for our site and allows us to produce maintainable features in record times, with a minimum of developers," said Cuong Do, Software Architect, YouTube.com.
  • Google
    "Python has been an important part of Google since the beginning, and remains so as the system grows and evolves. Today dozens of Google engineers use Python, and we're looking for more people with skills in this language." said Peter Norvig, director of search quality at Google, Inc.

オブジェクトとクラス

オブジェクトとは、データだけでなく、振る舞い(メソッド)を含み、クラスを定義することによって生成できるもののことである。
クラスではオブジェクトを作成する際の__データ__や__メソッド__を定義する。
classとは、クラスを定義する際のキーワード(予約語)である。

クラスもオブジェクトの一種で(pythonはすべてオブジェクト)、クラスから生成したオブジェクトを特別に区別するために__インスタンス__と呼んでいる。

class.py
    class SchoolMember:
        def __init__(self, classes, name, number):
            self.classes = classes
            self.name = name
            self.number = number

基本的なクラス定義の仕方はclassの後にクラス名を指定し、def ~~で関数(メソッド)を記述する。
この時、クラス名は大文字から始める。
__コンストラクタ__は、__init__という名前で定義するのがルールである。
__コンストラクタ__はオブジェクト生成時に最初に実行される、初期化用の関数のことである。

コンストラクタの第一引数は__self__とし、__self__は__インスタンス__自身を指す。

instance.py
    # インスタンス生成
    school_member1 = SchoolMember(1, 'Taro', 10)
    # インスタンスの参照(instance).(member)
    print(school_member1.classes) # 1
    print(school_member1.name) # Taro
    print(school_member1.number) # 10
    # memberの書き換えも可能
    school_member1.classes = 2
    print(school_member1.classes) # 2

クラス内で定義された変数のことを__member__と呼び、今回だとclasses namenumberである。

クラスの継承

親クラスの機能をそのまま引き継いだ子クラスをクラスの継承と呼ぶ。
クラスの継承には既存のクラスが必要であり、既存のクラスに機能を追加したいときにクラスの継承を行うことで既存クラスに直接書き加えることなくメソッドなどの追加ができる。
クラスの継承元は親クラススーパークラスなどと呼ばれ、継承先のクラスを子クラス派生クラスなどと呼ばれる。

簡単なクラス継承

class_inheritance.py
    class Game:
        def __init__(self, name, hardware):
            self.name = name
            self.hardware = hardware

    # 継承先(子クラス)の生成
    class GameChild(Game):
        def __init__(self, name, hardware, category):
            self.name = name
            self.hardware = hardware
            self.category = category

    game1_data = GameChild('Apex', 'PC', 'FPS')
    print(game1_data.name)
    # Apex

super()を使ったクラス継承

class_super_inheritance.py
    class Game:
        def __init__(self, name, hardware):
            self.name = name
            self.hardware = hardware

    class GameChild(Game):
        def __init__(self, name, hardware, category):
            # 親クラスのコンストラクタの呼び出し
            super(GameChild, self).__init__(name, hardware)
            self.category = category

    game1_data = GameChild('VALORANT', 'PC', 'FPS')
    print(game1_data.name)
    # VALORANT

メソッド

メソッドとは、クラス内で定義された関数オブジェクトの属性として参照される関数などのことである。

method.py
    class Friend:
        def __init__(self, year, sex, height, weight):
            self.year = yaer
            self.sex = sex
            self.height = height
            self.weight = weight

        def calculation_BMI(self):
            bmi = round(self.weight / ((self.height / 100) ** 2))
            return bmi

    friend1_data = Friend(20, 'man', 170, 55)
    print(friend1_data.calculation_BMI())

関数とメソッドの違い

呼び出し方の違い
関数: 単独で呼び出しできる
メソッド: 変数や値に付けて呼び出す

print()len()などは単独で呼び出せるので関数である。

function.py
    print("Hello! Taro.") 
    # Hello! Taro.
    print(len(["dog", "cat", "hamster", "fish"]))
    # 4

リストに要素を追加するappend()や文字列を繋ぐjoin()は変数や値に付けて呼び出すメソッドである。
変数や値の後にドット(.) + メソッドとすることで呼び出すことができる。

method.py
    animal_list = ["dog", "cat", "hamster", "fish"]
    animal_list.append("lion")
    print(animal_list)
    # ["dog", "cat", "hamster", "fish", "lion"]
    animal_list_join = "/".join(animal_list)
    print(animal_list_join)
    # dog/cat/hamster/fish/lion

ただし、メソッドはデータ型に紐付いた関数のため、呼び出せる種類はデータ型で異なる。
上記の例のappend()はリスト型の変数には使えるが辞書型には使えない。
またどちらでも使えるメソッドpop()などもある。

参考

3
2
5

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
3
2