- Kivy Cookbook
- Hugo Solis
- 318字
- 2021-07-16 20:39:54
Declaring properties within a class
Here we want to highlight an important difference between traditional Python coding and Kivy, and the usefulness of this change.
Getting ready
We need to remember the traditional form to declare properties in Python. Usually, if we want to declare a property in Python, we do something such as:
class MyClass(object): def __init__(self): super(MyClass,self).__init__() self._numeric_var = 1 @property def numeric_var(self): return self._numeric_var
We are declaring a numeric one, whereas if we use MyClass().numeric_var
in the Python shell, we get 1
in return.
How to do it…
Now, to declare this property in Kivy we follow these steps:
- Import Kivy and its properties
- Define the class
- Reference the Kivy property, in this case the numeric one:
import kivy from kivy.event import EventDispatcher from kivy.properties import * class MyClass(EventDispatcher): numeric_var = NumericProperty(1.0)
How it works…
The idea behind this is that you inherit the declaration from Kivy's properties, which reduces the number of code lines.
To use them, you have to declare them at a class level. That is, directly in the class, not in any method for the class. A property is a class attribute that will automatically create instance attributes. Each property, by default, provides an on_<propertyname>
event that is called whenever the property's state/value changes.
Something additional to point out is that NumericProperty accepts all the Python numeric values: ints, floats, and longs.
In general, Kivy properties can be overridden easily when creating the instance of the class, using keyword arguments such as ClassName(property=newvalue)
.
There's more…
They help you to:
- Easily manipulate widgets defined in the Kv language
- Automatically observe any changes
- Check and validate values
- Optimize memory management
Kivy provides more properties as follows:
- NumericProperty
- StringProperty
- ListProperty
- ObjectProperty
- BooleanProperty
- BoundedNumericProperty
- OptionProperty
- ReferenceListProperty
- AliasProperty
- DictProperty
See also
These properties actually implement the Observer pattern; if you want to learn more about patterns, you can find information online at http://www.oodesign.com/observer-pattern.html.
- Vue 3移動Web開發(fā)與性能調(diào)優(yōu)實戰(zhàn)
- Learning C# by Developing Games with Unity 2020
- CMDB分步構(gòu)建指南
- Visual C++串口通信開發(fā)入門與編程實踐
- C#程序設(shè)計(慕課版)
- 網(wǎng)頁設(shè)計與制作教程(HTML+CSS+JavaScript)(第2版)
- JS全書:JavaScript Web前端開發(fā)指南
- Mastering Apache Maven 3
- Asynchronous Android Programming(Second Edition)
- jQuery Mobile移動應(yīng)用開發(fā)實戰(zhàn)(第3版)
- Learning OpenCV 3 Computer Vision with Python(Second Edition)
- Java Web開發(fā)詳解
- 深入淺出React和Redux
- Web前端應(yīng)用開發(fā)技術(shù)
- Principles of Strategic Data Science