There are two ways web parts communicate.
First, from a Web Part you can reach other Web Parts in the same zone at least, WebPart.Zone Property.
Then you can set the property on all in the same zone, for example like this:
if (Zone == null) return;
Where(webPart => webPart is MyWebPart).ToList().
ForEach(webPart => ((MyWebPart)webPart).MyProperty = "Hello, world!");
Second, You can also use Web Parts Connections to connect the Web Parts together. Although I personally find this a bit cumbersome.
More Info: Web Part Connections
One more solution is to implement updating of properties through querystring/request parameters.