[Property Definitions - Blender Python API](https://docs.blender.org/api/current/bpy.props.html)
"Property" (likt operator) är Blenders ramar för att skapa de värden Blender-användaren ska kunna styra över. Exempel på dessa är skalan på scenobjekt, output-filvägen för videorendering och en operators olika inputvärden.
En och samma typ av property kan ha olika utseenden beroende på dess "subtype". En string property kan exempelvis stylas som en filsökväg och få den utökade funktionaliteten som hjälper användaren att öppna filhanteraren per automatik.
**Några typiska scenarion en property hjälper er vid**
* Ni vill exponera ett värde för Blender-användaren
* En operator kräver användarinput (numeriska fält exempelvis)
* Ni vill associera ett värde med en existerande typ av data (objekt, material, kollektion osv.)
# Exempelanvändning
Det enklaste exemplet vore att utöka en existerande typ av data med en ny property.
Följande typer av data är vanliga att utöka, andra lite mer nischade
* Objekt (`bpy.types.Object`)
* Material (`bpy.types.Material`)
* Kollektioner (`bpy.types.Collection`)
* Scener (`bpy.types.Scene`)
```python
classes = [...]
def register():
for cls in classes:
bpy.utils.register_class(cls)
# Döp er property till något lämpligt
bpy.types.Object.my_prop = bpy.props.FloatProperty(name="My Property")
def unregister():
for cls in reversed(classes):
bpy.utils.register_class(cls)
# Glöm inte att ta bort er property när verktyget avregistreras,
# detta gör ni med syntaxen "del"
del bpy.types.Object.my_prop
if __name__ == "__main__":
register()
```
För att komma åt er property kan ni göra på två olika sätt
```python
# Det ena är att gå genom (blendfilens) data
value = bpy.data.objects["Cube"].my_prop # Här tas värdet ur objektet "Cube"
bpy.data.objects["Cube"].my_prop = 5.5 # Likadant kan ni sätta värdet för "Cube"
# Det andra är att gå genom kontextvariabler
value = bpy.context.object.my_prop # Här tas det aktiva objektets värde
bpy.context.object.my_prop = 5.5 # Likadant kan ni sätta värdet på objektet
```