# TraitFactory


```
open class TraitFactory<T : Trait>
```

<br />

Known direct subclasses [AutomationExecution.Companion](https://developers.home.google.com/reference/kotlin/com/google/home/google/AutomationExecution.Companion), [UnknownTrait.UnknownTraitFactory](https://developers.home.google.com/reference/kotlin/com/google/home/automation/UnknownTrait.UnknownTraitFactory), [VideoAnalysis.Companion](https://developers.home.google.com/reference/kotlin/com/google/home/google/VideoAnalysis.Companion)

|---|---|
| `https://developers.home.google.com/reference/kotlin/com/google/home/google/AutomationExecution.Companion` |   |
| `https://developers.home.google.com/reference/kotlin/com/google/home/automation/UnknownTrait.UnknownTraitFactory` |   |
| `https://developers.home.google.com/reference/kotlin/com/google/home/google/VideoAnalysis.Companion` |   |

*** ** * ** ***

Wrapper for companions to subclass to create shorter syntax. For example, `device.trait(OnOff)` versus `device.trait(OnOff.factory)`.

## Summary

| ### Public constructors |
|---|
| `<T : https://developers.home.google.com/reference/kotlin/com/google/home/Trait> https://developers.home.google.com/reference/kotlin/com/google/home/TraitFactory#TraitFactory(com.google.home.InternalTraitFactory)(factory: InternalTraitFactory<T>)` |

| ### Public functions |
|---|---|
| `open https://developers.home.google.com/reference/kotlin/com/google/home/Field?` | `@https://developers.home.google.com/reference/kotlin/com/google/home/annotation/HomeExperimentalApi https://developers.home.google.com/reference/kotlin/com/google/home/TraitFactory#getAttributeById(kotlin.UInt)(tagId: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-u-int/index.html)` |
| `open https://developers.home.google.com/reference/kotlin/com/google/home/Field?` | `@https://developers.home.google.com/reference/kotlin/com/google/home/annotation/HomeExperimentalApi https://developers.home.google.com/reference/kotlin/com/google/home/TraitFactory#getAttributeByName(kotlin.String)(name: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)` |

| ### Public properties |
|---|---|
| `InternalTraitFactory<T>` | `https://developers.home.google.com/reference/kotlin/com/google/home/TraitFactory#factory()` the internal factory. |

## Public constructors

### TraitFactory

```
<T : Trait> TraitFactory(factory: InternalTraitFactory<T>)
```

## Public functions

### getAttributeById

```
@HomeExperimentalApi
open fun getAttributeById(tagId: UInt): Field?
```

### getAttributeByName

```
@HomeExperimentalApi
open fun getAttributeByName(name: String): Field?
```

## Public properties

### factory

```
val factory: InternalTraitFactory<T>
```

the internal factory.