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