Car part should not care about car it is on in any way.
We talk about data here..
Lets say property of part changes. this is job of Proxy to alter it as Cliff mentioned. Lets say then part is changed Car data must be affected somehow... now we have 2 options :
1 logic involved
2 no logic.. just data.
if logic is needed... that's it.. it's work of command to care about it all.. it should set car data and car part data by using proxy on its own. If action needs some decision making - create command.
if no logic is involved.. but some arbitrary data must be altered... lets say car has weight, every part adds weight for the car... every time then proxy adds part to the car, it could recalculate car weight and just set it. Its data stuff. no logic is needed here.
even arbitrary check like...
if(part[i].hasWeight){
car.weight += part[i].weight
}
is ok here.. again - data stuff.
in any case.... part is just a part... it should hold part data and should be ignorant on whatever car... shelf... trash-bin it is placed in.
rethink your OOP architecture.
PS : it's the same thing with view, the only difference is that view car-part might be active object, not like car-part data object. And as active object this object can do stuff on its own sometimes. Still it should be ignorant about car it is in' and should send event to talk about jobs it does. If it is in the car... car will be affected by this event somehow. Lets say... radar installed in the car can send signal about police post in front.
Meanwhile in lot of cases this car-part can't do stuff on its own... lets say... wheel can't spin on its own. Car must spin them, in this cases car should manage its parts and use them.
Think OOP - it will lead you to most intuitive implementation and in almost all cases - proper architecture.
Have fun.