### 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設計語言