### 1.4属性
Kivy介绍了一种新的在一个类中生命属性的方法,以前的方式为:
```Python
class MyClass(object):
def __init__(self):
super(MyClass, self).__init__()
self.numeric_var = 1
```
而Kivy的方式为:
```Python
class MyClass(eventDispatcher):
numeric_var = NumericProperty(1)
```
这些属性实现了[观察者模式](http://en.wikipedia.org/wiki/Observer_pattern),它们对你有以下帮助:
* 更容易操纵定义在[Kv 语言]中的部件
* 自动监控任何的变动,并且执行相应的代码
* 检查刷新属性值
* 优化内存管理
为了使用属性,**你必须在一个类里面声明它们**,注意是直接写在类里面,而不是写在任何的类的方法里,它是一个类属性。每一个属性都默认提供了一个on_<propertyname\>事件;当属性值的状态和属性值发生改变时该事件均会被调用。
Kivy提供了下列的属性:
* [NumericProperty](https://kivy.org/docs/api-kivy.properties.html#kivy.properties.NumericProperty)
* [StringProperty](https://kivy.org/docs/api-kivy.properties.html#kivy.properties.StringProperty)
* [ListProperty](https://kivy.org/docs/api-kivy.properties.html#kivy.properties.ListProperty)
* [ObjectProperty](https://kivy.org/docs/api-kivy.properties.html#kivy.properties.ObjectProperty)
* [BooleanProperty](https://kivy.org/docs/api-kivy.properties.html#kivy.properties.BooleanProperty)
* [BoundedNumericProperty](https://kivy.org/docs/api-kivy.properties.html#kivy.properties.BoundedNumericProperty)
* [OptionProperty](https://kivy.org/docs/api-kivy.properties.html#kivy.properties.OptionProperty)
* [ReferenceListProperty](https://kivy.org/docs/api-kivy.properties.html#kivy.properties.ReferenceListProperty)
* [AliasProperty](https://kivy.org/docs/api-kivy.properties.html#kivy.properties.AliasProperty)
* [DictProperty](https://kivy.org/docs/api-kivy.properties.html#kivy.properties.DictProperty)
如果想有更深的了解,请查看[属性](https://kivy.org/docs/api-kivy.properties.html)
### 下节预告:1.5 Kv设计语言