Yep, the closest thing to immutability in Python is a property member with a setter that does nothing.
Well, in version 3 you don't even need a setter
>>> class Test:
def __init__(self, x):
self.__x = x
>>> t = Test(2)
>>> t.X = 4
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
t.X = 4
AttributeError: can't set attribute
Note that even access control doesn't really exist in Python; you can always introspect the object to determine all of its members. The double leading underscore just excludes it from default name resolution, but dumping the object dictionary shows it plain as day.
I have no experience with static code tools for C#, but I will assume that they are basically the same as the tools for Java, in which case I don't recall a single time any suggestion was actually helpful. I worked one place that used these tools, and I suspect it was because the other programmers were so bad it was the only way they could get their code to run. I didn't stay there long enough to find out.
I use resharper, mostly for it's refactoring, unit test and navigations tools (go to implementation, I love you!), but it's static analysis is surprisingly good.