Object Orientation – When should I use a property instead of an attribute in Python?

If I put the class Nobody below:

class Person:
def __init __ (auto, name):
auto .__ name = name

Like this:

class Person:
def __init __ (auto, name):
self.name = name
self.kind = gender

def name (self):
return yourself .__ name

@ name.setter
def name (self, value):
auto .__ name = value

What is my advantage? The second definition using property, getter, and setter is not the same as the first definition using only attributes?