There is currently no good way to access the underlying information of an interface (mac address, oper_state): the current pattern assumes that the interface is correctly working and that it is safe to call to `Interface("interface_name") (or whatever subclass) and from then call the underlying function (get_mac, get_oper_state, etc.)
A recently patch allowed for the logging to be disabled, but there is still a risk for the interface to be created if something is not like expected (like the user deciding to remove the interface using Linux command ip link).
The code should provide a option when creating the interface which will skip the interface creation code def _create(..).
Something like EthernetIf("eth0", create=False) should prevent the interface creation.
All operational command should then be able to safely be instantiated with `InterfaceNameIf("name", create=False, debug=False) with the default being true
Where this pattern is used, when possible Interface should be replaced by the right Interface type too (EthernetIf, DummyIf, ...)