类-描述器-把类对象方法转变为属性方式
方法一:property函数法
class Person: def __init__(self): self.__age=0 def __get_age(self):#获取函数 return self.__age def __set_age(self,x):#修改函数 self.__age=x def __del_age(self):#删除函数 del self.__age age = property(__get_age,__set_age,__del_age) #把方法变成属性方式
#参数1 获取方法;参数2 修改方法;参数3 删除方法 p = Person() p.age = 10 print(p.age) del p.age
方法二:装饰器法
class Person: def __init__(self): self.__age=0 @property # 把下面的函数伪装成属性,只能用于类中的函数并没有参数的函数 def age(self):#获取函数 return self.__age @age.setter # 下面是修改函数,只能一个参数 def age(self,x):#修改函数 self.__age=x @age.deleter # 删除这个属性 def age(self):#删除函数 del self.__age p = Person() p.age = 10 print(p.age) del p.age
方法三:创建描述器类
必须是新式类
class Age: #创建描述器类-包含修改,获取,删除内置函数 def __set__(self, instance, value): #self保存的是age;instance保存的是p ,value保存的是数据值10 instance.v=value #保存数据-增加一个对象属性用来保存数据 def __get__(self, instance, owner): # owner保存的是实例age所在的类 return instance.v def __delete__(self, instance): del instance.v class Person: age=Age() #利用描述器创建属性
p = Person() p.age=10 #调用描述器的__set__函数 print(p.age)
天子骄龙
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)