質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Kivy

Kivyは、Pythonを用いたNUI開発のためのオープンソースフレームワーク。マルチタッチなど多くの入力に対応したNUIアプリなどを開発することができます。多くの環境で動作するクロスプラットフォームです。

Q&A

解決済

1回答

304閲覧

kivy 言語 python構文と照らし合わせた場合の理解

akiyama3284pga

総合スコア186

Kivy

Kivyは、Pythonを用いたNUI開発のためのオープンソースフレームワーク。マルチタッチなど多くの入力に対応したNUIアプリなどを開発することができます。多くの環境で動作するクロスプラットフォームです。

0グッド

0クリップ

投稿2022/07/11 01:57

kivyを始めたのですが、少し純粋なpython構文とどうマッチするのか理解できにくい部分があり、
質問させていただきます。

例えば、以下のようなkv言語は、

k.kv

<class_a@ScrollView>: class_b: size: 100, 100 class_a: // ???

ScrollViewクラスを継承したclass_aクラスを継承したclass_bクラスをインスタンス化し、
そのインスタンス変数のsizeの値を変えているように解釈しています。

すると、最後のclass_aのインスタンス化作業は不要に思います。
しかしこの記述が無いと動作しないため、重要な役割があるのは理解できます。
そもそもどこかの解釈がおかしいのか、どう理解すべきでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

class_bクラスをインスタンス化し

<class_a@ScrollView>:以下はあくまでクラス定義ですので、class_bはインスタンス化されません。
最後のclass_a:によってインスタンス化されます。

投稿2022/07/11 02:11

can110

総合スコア38268

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akiyama3284pga

2022/07/11 02:20 編集

ご回答ありがとうございます。 大事な点を理解することができました。 class_b:はインスタンス化という意味では無いということ(継承という意味のみ)で、 だとしますともしかして、逆(つまりclass_a が class_b を継承)ということでしょうか? それであれば、class_bを継承したclass_a を最後にインスタンス化するとclass_bの内容も含まれているという 点で合点がいきます... 最後のclass_a: を class_b: に変更した場合は、class_aの機能を得られない状態でのインスタンス化となったため、このように考えるのが自然かと思ってしましたます。(class_bがclass_aを継承しているとは思えない。)
can110

2022/07/11 02:28

いえ。class_a と class_b の関係は継承(is-a)ではなく包含(has-a)です。 「class_a(Window) は class_b(TextBox) を持つ」といった関係になります。
akiyama3284pga

2022/07/11 02:49 編集

ありがとうございます。 概念を完全に理解することができました。 kv.とpythonは全く見た目は違うという前提を忘れてしまい、kvにpythonの言語の何となくの様相を押し付けて考えた結果、思わぬ混同を招いておりました。。。 kvは表を作るためのものなので、確かにこのようにHTMLのように、 <div> <div></div> <div> のような階層的な表現の方が圧倒的に作りやすいと思いますし、妥当な仕様かと感じることができました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問