Итак, у меня есть набор данных звезд, для которого я создаю класс (Звезда). И из этих звезд некоторые из них являются переменными звездами. Я создал дочерний класс (Variable), но когда я определяю, что один из моих объектов Star является переменной star (код не включен), я хочу включить дополнительную информацию в этот же объект без необходимости заново определять старую информацию и дополнительно классифицировать объект в дочерний класс.
Я знаю, что смогу заставить его работать, если сделаю что-то вроде этого:
# Class attribute
category = 'variable'
# Initializer / Instance attributes
def __init__(self, name, coordinates, scatter, photometry, periods, amplitudes):
и затем:
star1 = Variable('Star 1', ('RA', 'dec'), 0.1, np.sin(np.linspace(0,1,100)), [1,100,1000], [1,2,1])
Но я не хочу уточнять всю эту информацию.
# Parent class
class Star:
# Class attribute
category = 'TESS'
# Initializer / Instance attributes
def __init__(self, name, coordinates, scatter):
self.name = name
self.coordinates = coordinates
self.scatter = scatter
star1 = Star('Star 1', ('RA', 'dec'), 0.1)
print('Parent class')
print('category :', star1.category)
print('name :', star1.name)
print('coordinates :', star1.coordinates)
print('scatter :', star1.scatter, '\n')
# Child class (inherits from Star() class)
class Variable(Star):
# Class attribute
category = 'variable'
# Initializer / Instance attributes
def __init__(self, photometry, periods, amplitudes):
self.photometry = photometry
self.periods = periods
self.amplitudes = amplitudes
star1 = Variable(np.sin(np.linspace(0,1,100)), [1,100,1000], [1,2,1])
print('Child class')
print('category :', star1.category)
print('photometry :', star1.photometry)
print('periods :', star1.periods)
print('amplitudes :', star1.amplitudes)
Код ниже работает как ожидалось. Но если я попробую:
print(star1.name)
после
star1 = Variable(np.sin(np.linspace(0,1,100)), [1,100,1000] [1,2,1])
имя, координаты и разброс, похоже, удалены из моего объекта.