Python кивые преимущества ObjectProperty

Я читаю книгу Марка Василькова "Черновики". В главе 1 автор вводит понятие свойств и утверждает, что они делают код чище.

Без свойств: я начал со следующего main.py

# Source: Chapter 1 of Kivy Blueprints
# File: main.py

from time import strftime
from kivy.app import App
from kivy.clock import Clock


class ClockApp(App):

    def update_time(self, _):

        self.root.ids.time.text = strftime("[b]%H[/b]:%M:%S")


    def on_start(self):

        Clock.schedule_interval(self.update_time, 1)


if __name__ == "__main__":

    ClockApp().run()

и часы.кв

# File: clock.kv
BoxLayout:
    orientation: "vertical"
    Label:
        id: time
        text: "[b]00[/b]:00:00"
        font_name: "Roboto"
        font_size: 60
        markup: True

Я думаю, что код ясен и легко следовать.

Со свойствами: Используя ObjectProperties (мне не совсем понятно, если это так, как это должно выглядеть), main.py определяется

# Source: Chapter 1 of Kivy Blueprintsa
# File: main.py
from time import strftime

from kivy.app import App
from kivy.clock import Clock
from kivy.properties import ObjectProperty
from kivy.uix.boxlayout import BoxLayout


class ClockLayout(BoxLayout):
    time_prop = ObjectProperty(None)


class ClockApp(App):

    def update_time(self, _):

        self.root.time_prop.text = strftime("[b]%H[/b]:%M:%S")

    def on_start(self):
        Clock.schedule_interval(self.update_time, 1)


if __name__ == "__main__":
    ClockApp().run()

и часы.кв

# File: clock.kv
BoxLayout:
    orientation: "vertical"
    time_prop: time
    ClockLayout:
        Label:
            id: time
            text: "[b]00[/b]:00:00"
            font_name: "Roboto"
            font_size: 60
            markup: True

Я не вижу прямого преимущества такого способа кодирования приложения часов. На мой взгляд, менее очевидно, что это делает. Автор утверждает, что этот способ кодирования следует принципу СУХОЙ (не повторяйся), которого я тоже не вижу. Я был бы счастлив, если бы кто-то мог объяснить мне, почему эта процедура лучше, чем использование идентификаторов, как ранее.

0 ответов

Другие вопросы по тегам