类方法,静态方法,魔术方法,私有化
1.类方法就是类中的方法,它属于类,可以通过类名来调用,也可以通过对象名来调用
2.类方法的表示是通过@classmethod装饰器来标识的,并且类方法里面自带类本身对象参数cls
3.静态方法也是类中的方法,属于类,可以通过类名调用,也可以通过对象名调用
4.静态方法的表示是通过@staticmethod装饰器标识的,不带参数,这也是它与类方法的区别
5.类方法和静态方法都不依赖对象,因为他们可以通过类名来调用,但也可以通过对象名来调用
class Dog: def __init__(self,nickname): self.nickname = nickname def run(self): print('{}在院子里面跑来跑去!'.format(self.nickname)) @classmethod #通过@classmethod修饰器标识 def test(cls):#带参数类本身参数,指向类cls print('这是类方法') @staticmethod#通过@staticmethod修饰器标识 def test_1():#无参数 print('这是静态方法') dog = Dog('大黄') dog.run()#结果为大黄在院子里面跑来跑去! Dog.test() #通过类调用类方法,结果为这是类方法 Dof.test_1() #通过类调用静态方法,结果为这是类方法 dog.test() #通过对象调用类方法,结果为这是静态方法 dog.test_1() #通过对象调用静态方法,结果为这是静态方法
6.魔术方法,就是一种特殊的方法,一般通过__XXX__()这样的形式来标识
7.主要的魔术方法有五种:__init__(),__new__(),__call__,__del__(),__str__()
重点的是:__init__():初始化对象,__str__():输出与对象名相关的信息
需要了解的是:__new__():为对象名开辟内存空间,__call__,将对象当做函数使用,定义该方法并通过对象名()来调用,__del__():删除变量的引用,引用共用的是同一内存空间
class Person: def __init__(self,name,age):#初始化变量 self.name = name self.age = age def __str__(self):#返回字符串,并且可以通过+连接字符串,作用是:输出与对象名相关的信息 return '{}今年{}岁!'.format(self.name,self.age) p = Person('张三',20)#初始化对象并赋值 p.__str__()#结果为张三今年20岁!
8.私有化:好处是外部不能随意改变类中的属性,并且可以设置属性条件
9.通过设置__属性名来标识这是一个私有属性
10.通过set方法修改私有化属性,通过get方法获得私有化属性
class Person: def init(self,__name,__age,__score): self.__name = name self.__age = age self.__score = score def __str__(self): return '{}今年{}岁,成绩是{}分!'.format(self.__name,self.__age,self.__score) def setAge(self,age):#通过set方法修改私有化属性的值
if age > 18:#设置属性条件
self.__age = age
else:
print('无法修改!') def getAge(self)#通过get方法获得私有化属性的值 return self.__age p = Person('李四',21,99) p.__str__() #结果为李四今年21岁,成绩是99分! p.__score = 90 #无法修改,因为该属性已被私有化 p.setAge(25) p.getAge() #结果为25 p.__str__() #结果为李四今年25岁,成绩是99分!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!