Python properties and assert

I noticed accessors weren't using @property decorators (@apply is deprecated for some time).

Also switched to assert statement for mandatory argument check against None, although I wonder if this is redundant as isinstance(None, SomeClass) should return False - in which case the following (see code) check (function check_type(...)) looks like it would catch this case.