スマホとPCは別物だった。触ってみて分かった学習の違い

はじめに

普段はスマホ中心でPython学習を進めています。

ProgateやSololearnで、スキマ時間に少しずつ積み上げる形です。

※スマホからPython学習を始めた理由については、こちらの記事で書いています

クラス周りにも少し慣れてきた頃、

ふと「__init__って本質的には何をしているんだろう?」と気になりました。

頭では理解しているつもりでも、どこか“ふわっとしている感覚”があったからです。

そこで久しぶりにPCを開き、実際にコードを書いて動かしてみることにしました。

PC環境の準備

学習用にローカルへPython環境は構築済みでした。

  • VS Codeで新規 .py ファイルを作成
  • 比較用に init_compare.py を用意
  • ターミナルから実行確認

やったことはシンプルですが、「自分で書いたコードを自分で実行する」という感覚は、スマホ学習とは明らかに違いました。

__init__なしパターン

まずは、あえて init を使わないクラスを書いてみました。

class BoatRacer:

pass

racer1 = BoatRacer() 

racer1.name = “Tanaka”

racer1.age = 32

インスタンス生成後に属性を追加する形です。

そして未定義の属性にアクセスすると、

しっかり AttributeError が出ます。

このとき感じたのは、「未完成のインスタンスが普通に存在できてしまうんだ」ということでした。

__init__ありパターン

次に init を使ったパターンです。

class BoatRacer:

 def init(self, name, age): 

self.name = name

self.age = age

racer1 = BoatRacer(“Tanaka”, 32)

インスタンス生成と同時に属性を必ずセットする構造になります。

ここで気づいたのは、__init__はコードを短くするための機能ではなく、「不完全な状態を作らせない設計装置」なのではないかということでした。

小さなコードでは差は小さく見えます。

でもデータ分析やオブジェクトが増えたとき、この差は大きくなりそうと感じました。

リストでオブジェクトを扱う

さらに、オブジェクトをリストに入れて回してみました。

racers = [racer1, racer2]

for racer in racers:

  print(racer.name)

このとき初めて、クラス=概念、オブジェクト=ちゃんと存在している“実体”という感覚が生まれました。

print(type(racer1)) を実行したとき、

「あ、ちゃんと存在しているんだ」と実感できたのが印象的でした。

エラーは怖くない

AttributeError を実際に体験してみて思ったのは、

エラーは怖いものではなく、情報だということです。

なぜ起きたのかが理解できると、むしろ「なるほど」と思える。

スマホ学習ではあまり“壊す”ことはありません。

PCでは、あえて触ってみることで理解が深まる感覚がありました。

スマホとPCは役割が違った

今回一番大きな気づきはここです。

スマホ:

  • 型に慣れる
  • 流れを掴む
  • 継続しやすい

PC:

  • 自分で書く
  • 壊してみる
  • 比較して考える

どちらが上という話ではなく、

役割がまったく違うと感じました。

以前は学習の順番についても整理しましたが、

今回は“媒体そのものの違い”を体感できた感覚に近いです。

※Progateから本へ進んで良かったと感じた理由はこちら

触ってみる派でいい

完璧に理解してから実践するのではなく、

触りながら理解が深まる。

今回のPC学習で一番楽しかったのは、「分かった」瞬間よりも「試してみた」時間でした。

やってみると、抽象的だったものが一気に具体に変わる。

スマホで慣れる。PCで触ってみる。

この組み合わせは、自分にはかなり合っていそうです。

まとめ

スマホとPCは同じPython学習でも、体験の質が違いました。

  • スマホは“慣れる場所”
  • PCは“触ってみる場所”

今回PCでコードを書いてみたことで、理解が“概念”から“体感”へ一歩進んだ気がします。

まだ初級レベルですが、この違いに気づけただけでも大きな収穫でした。

タイトルとURLをコピーしました