Python的对象属性优势

时间:2018-08-09 08:50:25

标签: python coding-style kivy kivy-language object-property

我正在阅读马克·瓦西尔科夫(Mark Vasilkov)写的《基维蓝图》。在第一章中,作者介绍了属性的概念,并指出这些属性使代码更简洁。

没有属性:我从以下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()

和clock.kv

# 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()

和Clock.kv

# 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

我没有看到这种对时钟应用程序进行编码的直接优势。我认为这样做并不明显。作者声称,这种编码方式遵循DRY(请勿重复)原则,我也没有看到。如果有人能启发我,为什么此过程比以前使用id更好,我会很高兴。

0 个答案:

没有答案