Python面向对象
Python从设计之初就已经是一门面向对象的语言
Python类:
1)类定义:
class 类名: def __init__(self, 参数, ...): # 构造函数,只在生成类的实例时被调用一次 ... def 方法名1(self, 参数, ...): # 方法1,方法的第一个参数是self,表示自身的实例 ... def 方法名2(self, 参数, ...): # 方法2 ...
实例化类:ClassName()
类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性
类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用
2)类实例方法
在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例,代表当前对象的地址,而self.class则指向类。
3)继承
子类的定义语法如下:
class sonClassName(fatherClassName1,fatherClassName2,fatherClassName3): <statement-1> . . . <statement-N>
子类会继承父类的属性和方法
4)类的私有属性
__ filed:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用self.__field访问。
5)类的私有方法
__method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用,不能在类的外部调用。调用方式self.__method。
#!/usr/bin/python3 #类定义 class people: #定义基本属性 name = '' age = 0 #定义私有属性,私有属性在类外部无法直接进行访问 __weight = 0 #定义构造方法 def __init__(self,n,a,w): self.name = n self.age = a self.__weight = w def speak(self): print("%s 说: 我 %d 岁。" %(self.name,self.age)) # 实例化类 p = people('runoob',10,30) p.speak()
6)类静态方法和类方法
一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法。
而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用
class A(object): # 静态方法,既可以作为类的方法使用,也可以作为类的实例的方法使用 @staticmethod def foo1(name): print 'hello', name # 类的实例方法 def foo2(self, name): print 'hello', name # 类方法,cls作为第一个参数用来表示类本身. 在类方法中用到,类方法是只与类本身有关而与实例无关的方法,既可以作为类的方法使用,也可以作为类的实例的方法使用 @classmethod def foo3(cls, name): print 'hello', name)
Python静态方法和类方法的区别:
静态方法:使用@staticmethod注解修饰,不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样;如果在静态方法中要调用到这个类的一些属性方法,只能直接类名.属性名或类名.方法名
类方法:使用@classmethod注解修饰,也不需要self参数,但第一个参数需要是表示自身类的cls参数;因为持有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码
self和cls的区别:
self 作为实例方法的第一个参数,表示当前类的实例
cls 作为类方法的第一个参数,表示当前类
END.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix