python中的类和对象
目录
创建类
python中使用class创建类,如
class Student: #Student为类的名称,由一个或者多个单词组成
pass#占位符
python中一切皆对象,student也是对象,叫类对象
- 类的组成
- 类属性
- 实例方法
- 静态方法
- 类方法
class Student:
native_pace = '江西' # 直接写在类里面并且不在方法里的变量叫类属性
# init初始化方法
def __init__(self, name, age):
self.name = name # self.name称为实体属性,这里是赋值操作,
self.age = age # self.后面的也可以随意定义,但是我们一般就用变量
# 实例方法,在类里面定义的def是实例方法,在类外面定义的def是函数
def eat(self):
# 括号内的'self'必须写上,就算没有写上,系统就会报错,但是可以换成别的名字
# 但是程序员习惯上就是用self,pycharm里面默认是self
print('慢蜗牛在吃饭')
# 静态方法
@staticmethod
def s_method():
# 静态方法中不用写self
print('使用了staticmethod,所以是静态方法')
# 类方法
@classmethod
def c_method(cls):
# 如实例方法一样,cls不能省略
print('使用了classmethod,所以是类方法')
到这里为止,我们的类就创建完毕了,这里只是一个模板
创建对象
# 创建Student类的对象
sws = Student('慢蜗牛', 20) # 这里要和前面创建的init初始化方法部分的格式一样
print(id(sws)) # 内存空间
print(type(sws)) # 类型
print(sws) # 打印sws
我们看看输出结果
2153006374672
<class '__main__.Student'>
<__main__.Student object at 0x000001F5492E1F10>
我们这里把第一行的2153006374672十进制数转换成十六进制数可以发现等于第三行的0x000001F5492E1F10
所以我们打印对象是打印出这个对象在内存中的地址
使用实例方法
sws.eat() # 对象名.方法名()
print(sws.name)
print(sws.age)
Student.eat(sws) # 类名.方法名(类的对象)——和实例方法格式一一对应
# 实例方法中的self就是自身的意思,就是对象本身
使用时我们用点号'.'来进行使用
慢蜗牛在吃饭
慢蜗牛
20
慢蜗牛在吃饭
类属性、类方法、静态方法
类属性:直接写在类里面并且不在方法里的变量,会被该类的所有对象所共享,比如我们前面定义的native_pace = '江西'中的native_pace
类方法:使用@classmethod修饰的方法,可使用类名直接访问
静态方法:使用@staticmethod修饰的方法,可使用类名直接访问
类属性
# 类属性的使用方式
print(Student.native_pace)
sws_1 = Student('慢蜗牛', 20)
sws_2 = Student('ssn', 21)
print(sws_1.native_pace)
print(sws_2.native_pace)# 类属性被所有对象所共享
我们使用类属性依旧用点号'.'来进行,并且最后两行输出应该为一致的,依靠的就是共享
江西
江西
江西
再举个例子来看看共享作用,我们在这段代码之后修改一下类属性
Student.native_pace = '陕西'
print(sws_1.native_pace)
print(sws_2.native_pace)
来看看输出
陕西
陕西
这样是不是可以很明显的了解到共享是什么了呢
我们类的对象中都包含了类指针,类指针都指向类,如图所示
其实类属性就相当于一个班级里的公共财产,比如班级里的电脑,每个同学都可以使用
但是如果电脑坏了或者更改了设置,那么每个同学使用的时候也是更改了之后的
类方法、静态方法
类方法:使用@classmethod修饰的方法,可使用类名直接访问
静态方法:使用@staticmethod修饰的方法,可使用类名直接访问
# 类方法的使用方式
Student.c_method()
# 静态方法的使用方式
Student.s_method()
类方法不用调用参数,静态方法无参数,也不需要调用
使用了classmethod,所以是类方法
使用了staticmethod,所以是静态方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了