Python之面向对象
vim day6-5.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/usr/bin/python # -*- coding:utf-8 -*- class Person( object ): def __init__( self ,name): #初始化函数,其实初始化已经执行了 self .name = name def say_name( self ): print "My name is %s" % self .name p1 = Person( "gf1" ) #实例化 p2 = Person( "gf2" ) p1.say_name() #调用类里面的某一个功能 |
类是一个模板不应用就是一个静态的
实例化会生成一个对象,对象是实体,对象是真实存在的
实例化是一个动作
给类赋予一个吃的功能
vim day6-5.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/usr/bin/python # -*- coding:utf-8 -*- class Person( object ): def __init__( self ,name): #初始化函数,其实初始化已经执行了 self .name = name def say_name( self ): print "My name is %s" % self .name def eat( self ): print "I am eating..." p1 = Person( "gf1" ) #实例化 p2 = Person( "gf2" ) p1.say_name() p1.eat() |
执行就在吃了
调用p2.eat()也显示在吃,但是到底是谁在吃不知道
vim day6-6.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/usr/bin/python # -*- coding:utf-8 -*- class Person( object ): def __init__( self ,name): #初始化函数,其实初始化已经执行了 self .name = name def say_name( self ): print "My name is %s" % self .name def eat( self ,n): print "%s is eating..." % n p1 = Person( "gf1" ) #实例化 p2 = Person( "gf2" ) p1.say_name() p1.eat( "gf1" ) p2.eat( "gf2" ) |
这样需要在定义的时候定义一个参数n
vim day6-7.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/usr/bin/python # -*- coding:utf-8 -*- class Person( object ): def __init__( self ,name): #初始化函数,其实初始化已经执行了 self .name = name #p1.name = 'gf1'把局部变量name赋值给self.name 因为下面可能有多个方法调用,局部变量在这里执行一次会失效 def say_name( self ): print "My name is %s" % self .name def eat( self ): print "%s is eating..." % self .name p1 = Person( "gf1" ) #实例化 p2 = Person( "gf2" ) p1.say_name() p1.eat() p2.eat() |
其实在实例化的时候已经赋值了
这里self代表实例本身 p1调用时代表p1 p2调用时代表p2
PS:类的方法(类函数)与普通的函数只有一个特别的区别:他们必须有一个额外的第一个参数名称
,但是在调用这个方法的时候你不必为这个参数赋值,Python会提供这个值.这个特别的变量指对象
本身,按惯例它的名称是self
类中定义的函数这里不叫函数,叫方法.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!