-
Notifications
You must be signed in to change notification settings - Fork 15
Open
Description
This would need to carry through to python-stix|cybox|maec. We don't need it except in places where we have extension points.
We have code that passes around a return_obj to handle type inheritance in to/from dict/obj methods.
class Foo(Entity):
_binding_class = some.binding.classname
def to_obj(self, return_obj=None, ns_info=None):
if return_obj is None:
return_obj = self._binding_class()
return_obj.value = self.value
return return_obj
class DerivedFoo(Foo):
_binding_class = some.other.binding.classname
def to_obj(self, return_obj=None, ns_info=None):
if return_obj is None:
return_obj = self._binding_class()
# Apply super attributes to the return_obj we created here
super(DerivedFoo, self).to_obj(return_obj=return_obj, ns_info=ns_info)
# Apply our own attribtes and return
return_obj.foo = "bar"
return return_objBut it could be replaced with code that makes better use of super().
class Foo(Entity):
_binding_class = some.binding.classname
def __init__(self):
self.value = "value"
def to_obj(self, ns_info=None):
obj = self._binding_class()
obj.value = self.value
return obj
class DerivedFoo(Foo):
_binding_class = some.other.binding.classname
def __init__(self):
super(DerivedFoo, self).__init__()
self.bar = "bar"
def to_obj(self, ns_info=None):
obj = super(DerivedFoo, self).to_obj(ns_info=ns_info)
obj.foo = self.foo
return objMost of this would be in python-stix|cybox|maec, but the changes would start in mixbox.
Metadata
Metadata
Assignees
Labels
No labels