Я работаю с python в данный момент и задаюсь вопросом о чем-то. Я не слишком хорош в программировании объектов, поскольку я всегда кодировал императивные языки (в основном, C).Управление классами в python
Так что я спрашиваю себя.
Скажем, у меня есть экземпляр class_1 называемых c1, заявил так:
c1 = class_1(bla bla bla...)
Say c1 имеет чёрта много объявлений переменных внутри, как
self.x = ...
self.y = ...
self.z = ...
#etc etc
Теперь у меня есть экземпляр типа class_2, называемый c2. Скажем, c2 объявляется ВНУТРИ функции c1 в инициализации(), как то
c2 = class_2(bla bla bla...)
Теперь, я удивляюсь, как я мог ... Acces объекты c1 c2 изнутри?
Некоторые могут сказать, что я мог бы наследовать class_2 от класса_1. Это не совсем то, что я хочу на самом деле. Причина в том, что class_1 должен логически включать объекты, которые имеют тип class_2, но class_2 должен обращаться к переменным из класса_1! Если бы я сделал class_2 наследованием от class_1, мне всегда приходилось ... объявлять объекты class_2 во внешнем (для классов) коде. Я хочу работать во внешнем коде с объектами class_1. Как я могу это разумно сделать? Начало ночного кошмара ...
Спасибо!
EDITED:
Контекст, в котором я использую его ... Я, как задание, написать небольшое пространство видеоигру. Я должен вычислить траектории в пространстве. У меня также есть карта. Некоторые параметры, такие как ускорение, скорость вращения и т. Д. Являются специфическими для «карты»: т. Е. Мы проектируем карту с препятствиями и все, но в зависимости от карты какая-то физическая константа меняется. У меня также есть класс «physcis» для обработки различных вычислений, связанных с траекторией, позиционированием и т. Д. И т. Д. Поэтому я просто хочу иметь возможность использовать множество многих экземпляров разных объектов, которые содержатся в «карте», класса, так что я могу использовать эти переменные внутри класса физики! Это законно? Спасибо!
Самый простой способ передать 'self' из' __init__' в качестве аргумента 'class_2'. Кроме того, ваша терминология кажется немного выключенной. Если 'class_1' - ваш класс,' c1' не является классом, это экземпляр. – BrenBarn
'c1' и' c2' выглядят как экземпляры здесь, а не классы. – user2357112
Да, извините, c2 и c1 являются экземплярами их уважающих типов class_2 и class_1, извинения – Yannick