[Introduction to Python Class] Carefully explain the basics of Python classes !! [For beginners]
Ғылым және технология
I'm a supporter who provides information about Python programming!
This video explains the basics of Python classes.
It will be a remake version that explains the video of the class that was released before in more detail!
※ Subtitles use automatic translation, so there may be some mistranslations.
・What is a class?
・What is an object?
・What is a method?
・What is an initializer?
I explain these
I'm actually running the Python code and demonstrating it, so I'd be happy if you could watch it to the end 😊
💙 Membership 💙
Explanation video ▶︎ • 【ご報告】本日からメンバーシップ開始します!...
Register ▶︎ / @pythonvtuber9917
For iPhone, click here ▶︎ PythonSuppl/statu...
💻 Operating environment 💻
Windows 10
Python 3.9.0
⭐️ Chapters ⭐️
0:00 Today's theme "About Python classes"
0:46 What is a class?
3:21 How to write a class
5:00 How to write an initializer
7:03 How to create objects
12:22 How to write methods
17:23 How to write class variables
23:38 ending
🎥 Last class video 🎥
Class basics ▶︎ • 【Pythonプログラミング入門】クラスの基...
💜 Channel description 💜
I'm a Vtuber Sapoo who explains Python programming✨
I will upload videos that are easy for beginners to understand and systematically learn Python!
I would be happy if everyone liked Python even a little 💕
I'm doing Twitter and blogging, so please follow me!
Twitter ▶︎ / pythonsuppl
Email ▶︎ python.supu.vtuber@gmail.com
#Python
#programming
#class
#beginner
#Introduction
#engineer
#basics
#python
#PythonVTuberサプー
Пікірлер: 92
pythonのクラスを概念的に理解させる為に、特に難解なselfとオブジェクトの関連を上手に解説されてる最高の教材動画だと思います。これ程丁寧かつ親切に噛み砕いて解説されてる動画は観たことがない。絶賛に値する名動画だと思います。動画主さんのご苦労と聡明な説明力に感謝します。
今まで何となく使っていたclassがちゃんと理解できた気がします。ありがとうございます!
@pythonvtuber9917
2 жыл бұрын
コメントありがとうございます😊 分かりやすい動画になるように工夫して作ったので、そう言ってもらえて嬉しいです!!
selfの扱い方や、各変数の呼び出し方などについて理解が深まりました。 今回もありがとうございます。
@pythonvtuber9917
2 жыл бұрын
コメントありがとうございます😊 クラスはつまづきやすいトピックですが、Pythonのクラスについて理解のお役に立てていたら嬉しいです!
初学者なのですが、めっちゃわかりやすかったです!ありがとうございました!
@pythonvtuber9917
3 жыл бұрын
ご視聴いただき、ありがとうございます!! お役に立てて良かったです🤗
クラスについて、解りやすい動画ありがとうございます。
@pythonvtuber9917
3 жыл бұрын
ご視聴いただき、ありがとうございます!! わかりやすいと思ってもらえて嬉しいです😊
初心者に優しい動画なのでとても理解が深まりました!
@pythonvtuber9917
3 жыл бұрын
ご視聴いただきありがとうございます😊 そう言っていただけて本当に嬉しいです!!
同じくPythonエンジニアをしているものです。私が思うクラスの文法は クラス(設計図) データ=クラス変数+インスタンス変数 機能=特殊メソッド+通常メソッド クラス変数:クラスから生成されるインスタンスのすべてが共通にもつデータ。 メソッド外で定義された変数。 メソッド内に呼び出す場合はself.クラス変数。 クラス外に呼び出す場合はクラス.クラス変数。 インスタンス変数:各々のインスタンス固有のデータ 初期化メソッドでself.インスタンス変数=〜と定義された変数 メソッド内に呼び出す場合はself.インスタンス変数 クラス外に呼び出す場合はインスタンス.インスタンス変数 メソッド:クラスの中で機能を表現する クラス外に呼び出す場合はインスタンス.メソッド() ※特殊メソッドはとくにインスタンス.メソッド()と呼び出さなくてもある条件を満たせば自動的にメソッドが実行される サプーさんの動画を見て学んだ弟子ですw
わかりやすい!ありがとうございました😭😭
@pythonvtuber9917
2 жыл бұрын
ご視聴いただきありがとうございます! クラスの理解のお役に立てていたら嬉しいです😊
教授の講義より全然短いのに何倍もわかりやすいの凄い!助かりました!
@pythonvtuber9917
Жыл бұрын
ご視聴ありがとうございます!!クラスの理解のお役に立っていたら嬉しいです!
わかりやすい!
@pythonvtuber9917
3 жыл бұрын
ありがとうございます!!そう言っていただけて嬉しいです😊
「クラスの基本を解説」を見ましたがついていけず。こちらをじっくり見ながら手を動かして理解するこができました! この動画があって良かった…。ありがとうございます。
@pythonvtuber9917
11 ай бұрын
クラスの理解のお役にたててよかったです!!
説明が丁寧で、構造的だと感じました。 非常にありがたいです。
Pythonチュートリアルの本では、料理に例えていましたが、こちらの成績表で例えている方が、個人的に分かりやすかったですし、こんなふうに使えそうだなぁと実用的なイメージが湧きやすかったです。 ありがとうございました👍
@pythonvtuber9917
2 жыл бұрын
ご視聴いただきありがとうございます😊 クラスは理解しにくいトピックではあると思いますが、分かりやすいと言ってもらえて嬉しいです✨
神動画! ありがとうございます
@pythonvtuber9917
Жыл бұрын
クラスの理解のお役に立てていたら嬉しいです!
Python初学者のジジイですが、わかりやすい、チャンネル登録させてもらいました。これからも頑張ってください!
@pythonvtuber9917
2 ай бұрын
チャンネル登録ありがとうございます!これからもPython関連の動画を色々投稿していくので、ご視聴いただけたら嬉しいです!
これはかなりわかりやすい。学校の先生よりもうまい! これは子供にも教えておこう。ありがとうございます。
@pythonvtuber9917
Жыл бұрын
ありがとうございます!分かりやすさを重視して作っているので、そう言ってもらえて嬉しいです!!
seleniumに興味を持ってPython(3.x系一本で行きたい)かじり始めた者です。この動画おかげでクラスとは何ぞ…が解決できモジュールの使い方はソースコードを見てなんとなく理解 → コード内のワードでググれば近道だ。と気づけました。
@pythonvtuber9917
2 жыл бұрын
ご視聴いただきありがとうございます! この動画が少しでも、コード理解の参考になっていたら嬉しいです😊
クラスもオブジェクト、要素もオブジェクト メソッドも、インスタンスも 全部オブジェクト
実例を混じえての説明で分かりやすかったです。ありがとうございます。 初学者なので、自分でclassを作ろうとすると、まだ混乱します。そこで質問なのですが、classを実践的に習得できる動画作成の予定、勉強方法はありますか? ご教授お願いいたします。
@pythonvtuber9917
2 жыл бұрын
コメントありがとうございます!! クラスの実践系の動画ですかね?作ろうと思っているんですが、まだ明確にいつ作るかの予定はないです😵 勉強方法としては、結局は色々なクラスを作ってみる・使ってみる、という事だと思います!
毎日この一連のコードを打ち込んでいます。書式とか2番目の def など、まだまだです。
@pythonvtuber9917
2 жыл бұрын
動画だと何度も見れるので、少しずつ理解していただけたらと思います😉 不明点があれば、コメントに記載いただけたらできる限り回答させていただいてます!
勉強させていただいてます◎ クラスについての前の動画で、イニシャライザの意味がよくわからなかったのですが、今回の動画でもよくわかりませんでした😢 ないとどうなるのでしょうか。普通に引数を受け渡しするだけではだめなのでしょうか。
サプーさん笑顔が素敵ですね!😄 全く違う人の本でpythonを勉強していたのですが、クラスについての理解を深めたいため、この動画にたどり着きました。 そこで教えていただきたいのですが、その人の本ではサプーさんがclass SchoolReport:としているところをclas schoolReport(object):としていました。どちらで書いても通るのですが、その意図するところを教えていだだけないでしょうか?その本の人の意図についてはサプーさんの推測でけっこうですので。
@pythonvtuber9917
2 жыл бұрын
ご質問ありがとうございます😊 クラスの継承についてはご理解でしょうか?class クラス名(object): と書くとobjectクラスを継承することになります。Pythonのクラスは基本的にobjectクラスを継承します。なのでいちいち書くのが面倒なので省略形としてclass クラス名: と書きます。Pythonの公式ドキュメントでもいちいち(object)と書いてはいないので、書かないのが普通かな 、と思います! 公式ドキュメント▶︎docs.python.org/ja/3/tutorial/classes.html#class-definition-syntax また、クラスの継承に関する動画もアップしているので、継承の意味が分からなけらば、ご参考にしてください😉 継承▶︎kzread.info/dash/bejne/kXpqj7agpKzUhKQ.html
@iceberg8891
2 жыл бұрын
おー!😳なるほど! リンク先の動画も参考になりますね!😂 クラスの扱い方は私にとって難しいもので、まだまだ理解したとは言えないのですが、これからは(object)は省略した、すっきりとした形で覚えることにします!ありがとうございました!!😁
めちゃくちゃわかりやすかったです! もしよければ__init__と__new__ってやつの違いの解説とかってできますか?
@pythonvtuber9917
2 жыл бұрын
newだけじゃなく、特殊メソッドだけを扱った動画を作ろうと考えてるので、少々お待ちいただけたらと思います!
python 初学者です。classの概念が理解できました。ありがとうございます。 1点classとは関係ないのですが、動画中に print(f"Aさんの3教科平均点:{avg_b}") とありますが、この print(f" ってどういう意味があるんでしょうか。
@pythonvtuber9917
2 жыл бұрын
ご質問ありがとうございます! こちらはf文字列(f-string)を使っています!Pythonの変数を文字列に埋め込むことができるんですが、色々な書き方があってとっても便利ですよ! 以前に、文字列フォーマットについて動画を出しているので、ぜひ、見てみてください😊 文字列フォーマット▶︎ kzread.info/dash/bejne/iqqYrNxrn5DSZpM.html
他の動画より分かりやすい!
@pythonvtuber9917
Жыл бұрын
ありがとうございます!!
質問すいません。 selfとotherって同じっていう解釈でよろしいのでしょうか??
とてもわかりやすい抗議ででした!ありがとうございます! 1点質問なのですが、動画内23:16のsum_scoreをAttributeErrorで呼び出せない場合の処置なのですが、動画内でself.をつけると仰っていたのですが、よくわかりませんでした。動画内も修正前も修正後もself.がついているように見えるのですがどうでしょうか?
@pythonvtuber9917
Жыл бұрын
あ、編集が切れててちょっとわかりにくいですね。selfをつけたのは左辺のsum_scoreですね。sum_scoreは始めはselfがついてないです。sum_socreをインスタンス変数にしないとオブジェクトからアクセスできないのでselfをつけています!
@user-xp3wx1qt1w
Жыл бұрын
@@pythonvtuber9917 ありがとうございます!見逃してました。問題なくアクセスできました。
こんにちは! いつも大変参考にさせてもらってます! さて、質問なのですが本動画で使用している「code.py」にメイン処理を記載するmain関数を作るとします。 作ったmain関数はif __name__ == '__main__':の中で実行します。 if __name__ == '__main__': はクラス外に書くのが一般的なのかな〜?と思っているのですが main関数もクラス外に書くのが一般的でしょうか?
@pythonvtuber9917
2 жыл бұрын
ご質問ありがとうございます😊 if __name__ == '__main__': は一番外に書きます! main関数もクラスの外に書きます! イメージとしてcode.pyの中身はこんな感じです😉 ================= import os class User: def __init__(self): pass def main(): pass if __name__ == '__main__': main()
@shima9527
2 жыл бұрын
@@pythonvtuber9917 import os class Kansha: def __init__(self): pass def main(): print('Thanks😉') if __name__ == '__main__': main()
動画の23:17あたりのsum_scoreの属性がないためエラーがでて、そのあとself.をつけるとエラーがなくなる部分がわかりませんでした エラー後の「self.をつけると〜」の部分でどこが変わったのかが分からないんですが、どう変わったからエラーが出なくなったのでしょうか? 的外れな質問だったらすみません
プロパティの動画から来ました。こちらの録音環境の方が、キンキンした感じが無くて聞きやすいですね。
@pythonvtuber9917
2 жыл бұрын
コメントありがとうございます! 音質が動画によってマチマチで申し訳ないです😵 出来る限り音割れがないように動画作成を頑張ります!!
Woooo my first language!!
@pythonvtuber9917
2 жыл бұрын
Thank you!
Pythonはインスタンス変数がオブジェクト作成後に追加できるという便利な機能あるけど、それが逆にクラス変数を同名のインスタンス変数が隠してしまって基本ルールのクラス変数はクラス共通なのに同名のインスタンス変数が優先され共通にならない状態が発生するのでややこしい。クラス変数をクラス間のグローバル変数みたいな感覚で使うと注意しないとうまくいかない 笑
@pythonvtuber9917
Жыл бұрын
おっしゃる通り、その部分はややこしいしバグの温床になりそうですよね...Pythonはオブジェクト指向でも書けるけど、厳密なものを求めるのであれば、別の言語の方が好ましいかな...という感じですね!
Pythonのクラスは継承より委譲? ってのをよく目にするのですがその辺りよくわかんないんですよね… 仕事上そこまで大規模なもの作ってるわけじゃないんで気にせずクラス継承使ってるんですが。。。
@pythonvtuber9917
2 жыл бұрын
コメントありがとうございます!! クラスの委譲については「is-aの関係 has-aの関係」という動画で解説しているので、よければ見てみてください😊 has-aの関係が委譲になります! is-a, has-a▶︎ kzread.info/dash/bejne/c2xsl5aHiae6lNI.html
python初心者です、クラスのインポートについて質問させていただきたいです。 A.pyというモジュールから、XというクラスをA_test.pyにインポートする際、(A.pyとA_test.pyは同じ階層の同じパッケージ) from A import X と書いてインポートして、Xからabcというオブジェクトを作って表記するために abc = X() X.abc.print() と書いたのですが、(Xにはprintメソッドがあります) type object X has no attribute abc と出てしまいます。A.py内ではXは正常に動きprintも動作したのでクラス自体には問題がないと思うのですが、どこを治せば良いでしょうか...?よろしくお願いします...
@pythonvtuber9917
Жыл бұрын
abcというオブジェクトを作ったら、abc.print()で呼び出せませんか?また、メソッド名として「print」を使うと、組み込み関数のprint()と被るので名前を変更したほうが良いですね!
よく参考書に関数だけでいいのにクラスで書かれていることがあります。 もし、大規模な開発を行うのであれば、クラスでかく意味がわかるのですが、100行程度でもクラスにわけて作っているものが多いです。これはなぜなのでしょうか。 それぞれの役割をはっきりとしたいためなのか、筆者が大規模な開発に携わっていて…だから癖でかいてしまうのか…色々と考えてしまいます。 また、今後のプログラム作成においてdefで一つのファイルにおさめるよりもクラスを普段から意識をして作っていった方がいいのでしょうか。
@pythonvtuber9917
2 жыл бұрын
ご質問ありがとうございます!とても鋭い質問ですね😊 クラスも関数も1つの道具なので、どちらを使うかは「どのように設計して、どのようにアプローチしたいか?」の違いでしかないと思います。これは習慣であったり、個人の好みの違いであって、どちらが正しいということはないです。 ただ、オブジェクト指向、カプセル化・継承・ポリモフィズムといったものを使いたい場合は、必然的にクラスを使用することになりますね。オブジェクト指向については動画を出しているので、よければ見てみてください! オブジェクト指向動画 ▶︎ kzread.info/dash/bejne/iousxdqcmK3Nkqw.html 「クラスを普段から意識をして作っていった方がいいのか?」の質問については、クラス作成に慣れているのであれば意識してクラスを使わなくていいと思います。「クラスを作ることはできるけど、あえて関数を使っている」のと、「関数しか使えないから関数を使っている」のでは、前者の方が良いと思います!なので、クラスに慣れてないのなら、意識してクラスを使ってみてもいいと思います😊
@mohimohi8581
2 жыл бұрын
@@pythonvtuber9917 参考の動画をありがとうございます。カプセル化や継承などを用いるときは、クラスの作成ということなので、目的に合わせて作っても良さそうですね! クラスを作ると再利用や内容の変更に強いプログラムができると思うので、複雑なプログラムを作るときにはクラスを用いること、それ以外はdefのみで一つのファイルで気軽に作ろうと思いました笑 回答ありがとうございました😊
@Cosmoideon
2 жыл бұрын
@@mohimohi8581 データ解析(science, marketing) くらいだったら関数でもいいような気がしますね。 でも少し込み入った解析、たとえば、マウス操作で画像解析をしたい時なんかはクラスを使った方がいいかもしれません。 クラスを使わない場合でも、一つの関数に全ての解析内容を組み入れるよりかはコンパートメントを意識して、改変しやすいように幾つもの関数を用意して組み合わせて使った方がいいような気がします。
大変わかりやすくありがたいです。一つ質問なのですが、クラス変数はコンストラクタの上に書くようにと説明されているのですが、試しにコンストラクタの下にインテンドを揃えて書いてみたところ、同じ挙動になるのですが、これはたまたま上手く行ったと言うことで、本来の書き方ではないと言うことでしょうか?
@ab_221B
11 ай бұрын
ソースコードの可読性やメンテナンスのしやすさで推奨されてるだけです。
お世話になります。今回のクラスは前回に比べて中身が濃くなっているので、時間がかかりました。前回と今回両方見ないと初心者としては辛いかもしれません。__init__がわかってきました。ありがとうございます。
@pythonvtuber9917
2 жыл бұрын
ご視聴いただきありがとうございます😊 初心者の場合、クラスは一気に理解するのは難しいですよね!色々クラスを扱う中で、慣れていってもらえたらとおもます!
c++のクラスでのSTATIC変数とクラス変数は似てますね
23:00のコードでも23:22のコードでも「self.」がついていると思いますが、前者のどこにselfがついていないのでしょうか スクショして見比べてみましたが、違いを見つけられませんでした
@user-sx2ys6hf6o
Ай бұрын
'sum_score'のところに'self'がついていません。 'self'がない'sum_score'は'calc_avg_score()'が呼ばれたときに 生成されてcalc_avg_score()'の処理が終わると'sum_score'は消えてしまうので 外部からアクセスできません。
アンダースコアをアンスコって略してる人がいたんですが、この呼び方ってメジャーなんですか?
@pythonvtuber9917
Жыл бұрын
普通に聞くし、私も使う時ありますね!
同じようにやったのにエラーでさきすすまない、、、 ----> 1 class SchoolReport: 2 def __init__(self, student_name, math_score, jp_score, en_score): 3 self.student_name = student_name Input In [41], in SchoolReport() 10 avg_score = sum_score/3 12 return avg_sore ---> 14 sr_a = SchoolReport('田中A', 100, 30, 50) 15 avg_a = sr_a.calc_avg_score() 16 print(f'Aさんの3教科平:{avg_a}') TypeError: __init__() takes 2 positional arguments but 5 were given
@pythonvtuber9917
2 жыл бұрын
エラー文言からすると、イニシャライザの引数の数が定義と違っているようですが、その実行ファイルのコード全部がわからないと、どこが間違っているのかちょっと分からないですね😵 エラー解消方法の動画も出しているので、ご覧ください! ▶︎ kzread.info/dash/bejne/oGF3p9Cdk8qndrw.html
わかりやすかったです! あと、sumをますって読んじゃってますよ
@pythonvtuber9917
2 жыл бұрын
コメントありがとうございます! わゎゎ.....15:19あたりで確かに言い間違えてますね😂 コードは正しいので聞き流してもらえたらと思います😇
print文の中のAさん、Bさんを自動で出力するコードはありますでしょうか?
@pythonvtuber9917
Жыл бұрын
すみません、質問の内容がよく理解できなかったのですが「自動で出力」というのは具体的にどのようなイメージが教えていただけますでしょうか?
まんまかいたのになぜか。 name 'SchoolReport' is not definedってでる。。。どうして。。。
@pythonvtuber9917
3 жыл бұрын
「SchoolReport」が定義されてないようですが、コード内にスペルミスなどはありませんか? エラーが出力されるソースコードを載せていただけたら、お役に立てるかもです!!
せっかくなのでデザインパターンの動画も...
@pythonvtuber9917
2 жыл бұрын
コメントありがとうございます😊 デザインパターンの動画も出したいと思っていました!!すぐにはアップできないですが、作成したいと思います!!
@-l6358
2 жыл бұрын
@@pythonvtuber9917 楽しみに待ってます!!
self.student_name = student_name の行がエラーと出ます
@pythonvtuber9917
2 жыл бұрын
ご質問ありがとうございます! エラー文はどのようなものでしょうか? また、エラー解消のための動画を出しているので、よければ見てみてください😉 ▶︎ kzread.info/dash/bejne/oGF3p9Cdk8qndrw.html