I don't know if that's the case of Python, but C# uses a structure like the OP presented because it ensures timely destruction of the object.
This isn't needed in Perl because Perl's garbage collector ensures that objects are destroyed as soon as they are no longer referenced. (Well, before the start of the next statement after the one in which they cease being referenced, anyway.)
While this leads to simpler code in Perl, the C# (and maybe Python) approach is faster and can handle references cycles.