python 类
- 定义类
1 2 3 4 5 6 7 | class 类名: def 函数名( self ): #哪个对象调用这个方法,self就是哪个对象 语句 def 函数名( self ): #类中定义函数,第一个参数要是self 语句 变量 = 类名() #创建类 |
- 类的内置方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | class cat(): def __new__( self ): #在init执行之前的方法,构造方法 pass def __init__( self ,newname,newage): #初始化该类时调用此方法,定义变量,不能return self .name = newname self .age = newage def __del__( self ): #实例被清除时调用此方法,析构方法 pass def __str__( self ): #str,print,format这三个函数调用实例时,此方法放回的值,如果没有__str__,使用__repr__返回的值,如果也没有,则调用object pass def__repr__( self ): #[],(),{}间接调用时,使用这个方法返回值 pass def__bytes__( self ): # bytes()函数调用 pass def __call__( self ): #实例=类名() -> 实例() 这时候调用的方法 pass def __len__( self ): #len(实例),这个时候调用的方法 pass def __hash__( self ): #返回对象的hash,hash()方法调用;如果这个方法返回none,该类就不可hash pass def __eq__( self ): #==时候调用,在set集合去重时会被调用,先判断hash,在判断eq pass |
- 查看实例成员
1 2 | tom = Person( 'tom' ) print (tom.__dict__) |
- 私有成员(双下划线),防止外部直接访问,不过可以间接的通过"_类名__属性名"访问
1 2 3 4 | class cat: __key = value #私有属性 def __方法( self ): #私有方法 pass |
- 保护成员(单下划线),只是一种约定,尽量不要直接使用这种变量,python不会对其做出任何更改
1 2 3 4 | class cat: _key = value def _方法( self ): pass |
- 继承
1 2 3 4 5 6 7 8 9 10 11 | #单继承 class 子类(父类名): def 方法名( self ): #子类方法 pass def 父类方法名( self ): #重写父类方法 重写父类方法 super ().父类方法() #调用父类方法,这样不会覆盖父类方法 #多继承,调用方法查找顺序子类->父类1->父类2 class 子类(父类 1 ,父类 2 ) pass |
- 类方法:当⽅法中 需要使⽤类对象 (如访问私有类属性等)时,定义类⽅法
1 2 3 4 5 6 7 8 9 | #需要⽤装饰器 @classmethod 来标识其为类⽅法,对于类⽅法,第⼀个参数必须是类对象,⼀般以 cls 作为第⼀个参数。 class Dog( object ): __tooth = 10 @classmethod def get_tooth( cls ): return cls .__tooth wangcai = Dog() result = wangcai.get_tooth() print (result) # 10 |
- 静态方法:当⽅法中 既不需要使⽤实例对象(如实例对象,实例属性),也不需要使⽤类对象 (如类属性、类⽅ 法、创建实例等)时,定义静态⽅法
1 2 3 4 5 6 7 8 9 | #需要通过装饰器 @staticmethod 来进⾏修饰,静态⽅法既不需要传递类对象也不需要传递实例对象 (形参没有self/cls) class Dog( object ): @staticmethod def info_print(): print ( '这是⼀个狗类,⽤于创建狗实例....' ) wangcai = Dog() # 静态⽅法既可以使⽤对象访问⼜可以使⽤类访问 wangcai.info_print() Dog.info_print() |
- main
1 2 3 4 5 6 7 8 9 10 11 12 | mymodule.py作为一个模块,我们希望保留末尾测试代码,即上面调用函数和类,但也不希望再导入模块的时候执行。该怎么办呢? 可以利用Python文件的一个内置属性__name__实现,如果直接运行Python文件,__name__的值是 "__mian__" ,如果 import 一个模块,那么模块的__name__的值是 "文件名" 。 # vi mymodule.py name = "aliang“ def count(a, b): result = a * b return f"{a}与{b}的乘积是: {result}“ if __name__ = = "__main__" : print ( "我在手动执行这个程序" ) print (count( 6 , 6 )) print (name) |
初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能