С __dict __. Update
Я бы посоветовал использовать __dict__
вместо super
, потому что super не поможет вам скопировать значение атрибутов родительского объекта. Таким образом, вы могли бы сделать что-то вроде этого:
class A():
def __init__(self):
self.x = 1
class B(A):
def __init__(self, a):
super(B, self).__init__()
self.__dict__.update(a.__dict__)
a = A()
b = B(a)
print(b.x) # displays '1'
a.x = 3
b2 = B(a)
print(b2.x) # displays '3'. Without the __dict__update, it would return '1'
Таким образом, вы устанавливаете каждый атрибут, который есть у вашего родительского класса, без изменения атрибутов дочернего класса, которых у родителя нет.
В вашем случае:
class CustomGenomicFeature(GenomicFeature):
def __init__(self,genomic_feature_instance,kikou):
super().__init__()
self.__dict__.update(genomic_feature_instance.__dict__)
# Subclass-specific stuff follows
self.kikou=kikou
С составом
Другим способом (и, возможно, более чистым) будет использование композиция вместо наследования:
class CustomGenomicFeature(GenomicFeature):
def __init__(self,genomic_feature_instance,kikou):
# keep ref to the genomic_feature_instance
self._genomic_feature = genomic_feature_instance
# Subclass-specific stuff follows
self.kikou=kikou
@property
def name(self):
return self._genomic_feature.name
Подробнее: