Keep it simple.
If you have such functions, just use a public variable. I.e:
class Person(object): def __init__(self): self.firstName = None self.lastName = None self.age = None
excellent. The best approach to use is to require data as part of the constructor, thus:
class Person(object): def __init__(self, firstName, lastName, age): self.firstName = firstName self.lastName = lastName self.age = None person = Person('Peter', 'Smith', 21)
If you are worried about what name is, you can always be specific:
person = Person(firstName='Peter', lastName='Smith', age=21)
In the future, if you need to make it more complex, you can add getters / setters where necessary.
Another consideration is that given the constructor, you can create a string conversion function in the Person object:
def __str__(self): return ' '.join([self.firstName, self.lastName])
This allows you to use it as:
person = Person(firstName='Peter', lastName='Smith', age=21) print(person)
therefore, you do not need to know how it is implemented internally.
Another consideration is that Chinese / Japanese names first put a surname, people can have several surnames (especially in Spain) and can have middle names.