网站首页 > 技术文章 正文
带你走进 @ 机器人时代
Discover 点击上面蓝色文字,关注我们
Python类中对类的方法分为:静态方法、类方法和实例方法三种,采用 @classmethod 修饰的方法为类方法;采用 @staticmethod 修饰的方法为静态方法;不用任何修改的方法为实例方法。
下面这段代码是实例方法:
class qt:
def __init__(self):
e=9
def saw(self):
print('这是一个实例方法')
s=qt()
s.saw() #类直接调用实例方法
qt.saw(s) #类名调用实例的方法,需要传值
运行结果:
这是一个实例方法
这是一个实例方法
采用@classmethod修饰的方法为类方法,看下面的代码:
#类方法
class qt:
def __init__(self):
e=9
@classmethod #类方法
def saw(cls): #约定俗成变量命名方式
print('这是一个类方法',cls)
qt.saw()
显示结果:
这是一个类方法 <class '__main__.qt'>
采用@staticmethod来修饰的方法为静态方法,其实就是一个定义在类名空间里面的函数,我们来测试一下:
#静态方法
class qt:
def __init__(self):
self.e=9
@staticmethod #静态方法
def saw(): #约定俗成变量命名方式
print('这是一个静态的方法')
qt.saw()
print(qt.e)
运行结果:
这是一个静态的方法
Traceback (most recent call last):
File "E:\Python程序\类的演示.py", line 81, in <module>
print(qt.e)
AttributeError: type object 'qt' has no attribute 'e'
使用静态方法的时候,其实相当于一个函数了,self.e这个变量就不存在了,因此调用就会出错。
实际工作中,实例的方法比较常见,但如果用下面的方法调用,则会出错:
class tru_op:
def yt(self):
print('我是李老师')
tru_op.yt()
运行结果:
Traceback (most recent call last):
File "E:\Python程序\类的演示.py", line 87, in <module>
tru_op.yt()
TypeError: tru_op.yt() missing 1 required positional argument: 'self'
为什么会这样?最后一行信息提示缺少self参数传值,直接调用的时候没有给self传值,那么修改代码如下:
tu=tru_op()
tru_op.yt(tu)#通过手动给类对象yt传值
运行结果:
我是李老师
或者我们可以用tru_op.yt(None)这样的方式,哪怕传一个空值(如果函数不需要传值的情况下),得到的运行结果都是正常的,如果函数需要传值,那就必须传值。
Python 中允许使用类名直接调用实例方法,但必须手动为该方法的第一个 self 参数传递参数,这种调用方法的方式被称为“非绑定方法”。
用类的实例对象访问类成员的方式称为绑定方法,而用类名调用类成员的方式称为非绑定方法。
坚持学习,这样每天都能进步一点点!!
往期回顾:
- 来来来,送你一个金牌销售机器人,7X24小时不休,不要工资免费用!
- RPA技术在旅行社销售业务中如何凤凰涅槃??
- 【工资翻三倍】系列:一招搞定九宫图片切割机器人,让你的朋友圈更加炫酷!
本文引用和摘录相关内容,请联系侵删。
- END -
最后,文章有帮助到你的话【点赞在看】
激励我们分享更多的干货!
猜你喜欢
- 2025-08-06 中等生如何学好初二数学函数篇
- 2025-08-06 C#构造函数
- 2025-08-06 初中数学:一次函数学习要点和方法
- 2025-08-06 仓颉编程语言基础-数据类型—结构类型
- 2025-08-06 C++实现委托机制
- 2025-08-06 初中VS高中三角函数:从"固定镜头"到"360°全景",数学视野升级
- 2025-08-06 一文讲透PLC中Static和Temp变量的区别
- 2025-08-06 类三剑客:一招修改所有对象!类方法与静态方法的核心区别!
- 2025-05-24 高中数学解题分析方法及知识点
- 2025-05-24 C/C++编程笔记:无法在C++中重载的函数,六种方式
- 最近发表
-
- count(*)、count1(1)、count(主键)、count(字段) 哪个更快?
- 深入探索 Spring Boot3 中 MyBatis 的 association 标签用法
- js异步操作 Promise fetch API 带来的网络请求变革—仙盟创梦IDE
- HTTP状态码超详细说明_http 状态码有哪些
- 聊聊跨域的原理与解决方法_跨域解决方案及原理
- 告别懵圈!产品新人的接口文档轻松入门指南
- 在Javaweb中实现发送简单邮件_java web发布
- 优化必备基础:Oracle中常见的三种表连接方式
- Oracle常用工具使用 - AWR_oracle工具有哪些
- 搭载USB 3.1接口:msi 微星 发布 990FXA Gaming 游戏主板
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)