Hey TripleC,
I couldn't decide whether each part of a tower should be it's own object, or if I should aggregate them into one for ease of scoring and collision detection. I went with the aggregate class, but it is probably bad OO design, and it is harder to understand. The Tower class holds 4 Rect()'s. (1 to represent each of the elements of the towers you need to fly through), and then has a draw() function, and an intersects() function for collision detection with the player.
self.upper_tower is a Rect to represent the shaft that starts at the roof
self.upper_cap is a Rect to represent the wider 'cap' that sits on the end of the upper tower
self.lower_tower is a Rect to represent the shaft that starts at the ground
self.lower_cap is a Rect to represent the wider cap that sits on the end of the lower tower
It draws each of the rects to screen manually - not sure how you would convert it to a layer (or layers).