如何创建可管理的对象属性
在面向对象编程中,我们把方法看作对象的接口。直接访问对象的属性可能是不安全的,或设计上不够灵活,但是使用调用方法在形式上不如直接访问属性简洁
繁琐的实现:
person.get_age()
person.set_age(20)
代码实现
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def set_age(self, age):
if not isinstance(age, int):
raise TypeError
self.age = age
def get_age(self):
return self.age
person = Person('小明', 18)
print(person.get_age()) # 输出原始年龄
person.set_age(20) # 设置新年龄
print(person.get_age()) # 输出新年龄
简单的实现:
person.get_age
person.set_age = 20
通过使用类装饰器@property或内置方法property,可以将方法类似于属性
- @property
- 代码示例
class Person(object): def __init__(self, name, age): self.name = name self.age = age @property def get_age(self): return self.age @get_age.setter def set_age(self, age): if not isinstance(age, int): raise TypeError self.age = age person = Person('小明', 18) print(person.get_age) # 输出原始年龄 person.set_age = 20 # 设置新年龄 print(person.age) # 输出新年龄
- 代码示例
- property方法
- 代码示例
class Person(object): def __init__(self, name, age): self.name = name self.age = age def get_age(self): return self.age def set_age(self, age): if not isinstance(age, int): raise TypeError self.age = age Age = property(get_age, set_age) person = Person('小明', 18) print(person.Age) person.Age = 20 print(person.Age)
- 代码示例
最后,有喜欢博主写的内容的伙伴可以收藏加关注哦!
本文探讨了在面向对象编程中如何优雅地管理和访问对象属性,对比了传统getter和setter方法与使用@property装饰器的不同实现方式,展示了如何利用Python的特性使代码更简洁且保持良好的封装性。

被折叠的 条评论
为什么被折叠?



