It should be in an initialize method, since refresh can also be called more than once. pylint can catch a lot of that kind of thing for you, which it reports as attributes defined outside of __init__ (we also allow attributes to be defined in initialize()).
pylint currently complains about _configureGrid, _cancelButton, _discoveryError, _startButton, _zfcpNotebook, _okButton, _deviceEntry and _conditionNotebook. Most of those are currently defined in refresh().
Note that I've configured pylint to also accept that attributes can be defined in the _grabObjects method. You can provide one of those and call it in your initialize method just for this purpose.
- Chris