8.编写一个Person类,包含姓名、年龄和地址等属性,并实现相应的getter和setter方法。
以下是一个Python编写的Person
类的示例,它包含姓名、年龄和地址等属性,并实现了相应的getter和setter方法:
python复制代码
class Person: | |
def __init__(self, name, age, address): | |
self._name = name | |
self._age = age | |
self._address = address | |
# Getter方法 | |
def get_name(self): | |
return self._name | |
def get_age(self): | |
return self._age | |
def get_address(self): | |
return self._address | |
# Setter方法 | |
def set_name(self, name): | |
self._name = name | |
def set_age(self, age): | |
if not isinstance(age, int) or age < 0: | |
raise ValueError("Age must be a non-negative integer.") | |
self._age = age | |
def set_address(self, address): | |
self._address = address | |
# 使用Person类 | |
person = Person("Alice", 25, "123 Main Street") | |
# 获取属性值 | |
print(person.get_name()) # 输出: Alice | |
print(person.get_age()) # 输出: 25 | |
print(person.get_address()) # 输出: 123 Main Street | |
# 设置属性值 | |
person.set_name("Bob") | |
person.set_age(30) | |
person.set_address("456 Elm Street") | |
# 再次获取属性值,确认它们已经被更新 | |
print(person.get_name()) # 输出: Bob | |
print(person.get_age()) # 输出: 30 | |
print(person.get_address()) # 输出: 456 Elm Street |
在这个例子中,Person
类有一个构造函数__init__
,它接收三个参数:name
、age
和address
,并将它们分别赋值给类的私有属性_name
、_age
和_address
。getter方法(如get_name
)用于获取这些属性的值,而setter方法(如set_age
)用于设置属性的值。在set_age
方法中,还加入了一个简单的验证,确保年龄是一个非负整数。
注意,在Python中,通常我们不需要显式地编写getter和setter方法,因为我们可以直接使用属性名称来访问和修改对象的属性。但是,在某些情况下,如需要执行额外的逻辑或验证时,可以定义这些方法。此外,使用下划线前缀(如_name
)是一种惯例,用于指示该属性是“受保护的”或“私有的”,意味着它不应该在类外部直接访问,而是通过类提供的方法(如getter和setter)来访问和修改。