在类中声明属性
这里我们想要强调一个重要的传统Python编码和kivy之间的不同点,以及这个改变的用途。
【做好准备】
我们要记得在python中声明属性的传统形式。通常,如果我们想要在Python中声明一个属性,我们会按照下面的方式来做。
class MyClass(object):
def __init__(self):
super(MyClass,self).__init__()
self._numeric_var = 1
@property
def numeric_var(self):
return self._numeric_var
我们声明了一个数字1,鉴于此,如果我们在python的编译器中使用MyClass().numeric_var,那么我们将得到返回值1。
【如何做】
现在,在kivy中声明这个属性,我们遵循这些步骤:
1.导入kivy和它的属性
2.定义这个类
3.调用kivy的属性,在这个实例中,使用数字1
import kivy
from kivy.event import EventDispatcher
from kivy.properties import *
class MyClass(EventDispatcher):
numeric_var = NumericProperty(1.0)
【怎样运行的】
这个后面的理念就是您从kivy的属性继承了声明,从而减少了代码的行数。
为了使用他们,你不得不在一个类的层面来声明。也就是直接在类里面,而不是在任何类的方法中。A
属性是一个类的属性,这是一个会自动建立实例的属性。每一个属性,默认的,会提供一个on_<propertyname>事件,无论何时这个属性的状态或者数值被改变,它都会被调用。还有一些别的要指出的的是NumericProperty 接受所有Python的数字值:ints, floats, 和 longs。
通常,在创建一个类的实例的时候,kivy属性能被轻松的重写,只要使用一个关键词变量,比如ClassName(property=newvalue).
【还有更多】
他们帮助你:
轻松的操控在kv语言中定义的小部件
自动的监测任何改变
检查和验证数值
优化内存管理
Kviy提供如下更多的属性:
f NumericProperty 数字属性
f StringProperty 文本属性
f ListProperty 列表属性
f ObjectProperty 控件属性
f BooleanProperty 布尔属性
f BoundedNumericProperty 数字连接属性
f OptionProperty 选择属性
f ReferenceListProperty 参考清单属性
f AliasProperty 别名属性
f DictProperty 辞典属性
【还看看】
这些属性实际上执行了观察者模式。如果您想要了解到更多的关于模式方面的只是,您可以在线发现更多的信息http://www.oodesign.com/observer- pattern.html