I'll take the time to write one later today but we could use a `@property`:

```python
@property
def widget(self):
    if self.localize:
        return TextInput
    else:
        return NumberInput
```

One of the con here is that `NumberField.widget` will be an instance of `property`. We could also write a descriptor to maintain backward compatibilty:

```python
class WidgetDescriptor(object):
    def __init__(self, widget, localized_widget):
        self.widget = widget
        self.localized_widget = localized_widget

    def __get__(self, instance, owner):
        if instance and instance.localize:
            return self.localized_widget
         return self.widget

class IntegerField(Field):
    widget = WidgetDescriptor(NumberInput, TextInput)
```

Maybe I'm just over-complicating this whole thing.