首页 > 其他分享 >绑定方法和非绑定方法

绑定方法和非绑定方法

时间:2023-07-28 09:22:34浏览次数:24  
标签:调用 对象 绑定 实例 方法 method

在Python中,绑定方法和非绑定方法是与类和对象相关的概念

绑定方法是类中定义的方法,它们可以通过类的实例进行调用。在调用绑定方法时,实例对象会自动被传递给方法的第一个参数,通常被命名为self。通过self参数,绑定方法可以访问和操作实例对象的属性和方法。绑定方法可以直接访问实例对象的属性,也可以调用实例对象的其他方法
class MyClass:
    def my_method(self):
        print("This is a bound method")

obj = MyClass()
obj.my_method()  # 调用绑定方法```

在上面的示例中,`my_method`是一个绑定方法,通过`obj.my_method()`的方式进行调用,`obj`会自动被传递给`my_method`作为第一个参数。

非绑定方法是类中的方法,它们不能直接通过实例对象进行调用,而是通过类名进行调用。在调用非绑定方法时,需要手动传递实例对象作为方法的第一个参数。与绑定方法不同,非绑定方法无法直接访问实例对象的属性和方法,因为它们没有自动传递实例对象的参数。

示例代码如下:

```python
class MyClass:
    @staticmethod
    def my_static_method():
        print("This is a static method")

MyClass.my_static_method()  # 调用非绑定方法

在上面的示例中,my_static_method是一个非绑定方法,通过MyClass.my_static_method()的方式进行调用,没有实例对象被自动传递给方法。如果需要在非绑定方法中访问实例对象的属性和方法,可以通过手动传递实例对象作为参数的方式实现。

需要注意的是,Python中还有一种特殊的方法,即类方法(class method)。类方法使用@classmethod装饰器进行定义,类似于非绑定方法,但可以自动传递类对象作为第一个参数,通常被命名为cls。类方法可以通过类名或实例对象进行调用,并且可以访问和操作类对象的属性和方法。

总结:

1 绑定方法是类中定义的方法,可以通过实例对象进行调用,自动传递实例对象作为第一个参数。
2 非绑定方法是类中定义的方法,不能通过实例对象进行调用,需要手动传递实例对象作为第一个参数。
3 类方法是特殊的方法,可以通过类名或实例对象进行调用,自动传递类对象作为第一个参数。

 

标签:调用,对象,绑定,实例,方法,method
From: https://www.cnblogs.com/abc683871/p/17586729.html

相关文章

  • Delphi 的 DBGrid 中的下拉列表和查找字段编程方法
    数据网格是非常流行的数据输入和显示形式,像大家熟悉的Excel、VFP 中的功能强大的BROWS 等,为广大程序员乐于采用。在用 Delphi 开发数据库应用系统时,利用数据网格DBGrid 输入数据时,有些字段只允许某几个固定的字符串,像档案案卷的保管期限,只有“永久”、“长期”和“短期”三种......
  • centos7关闭防火墙后只有22端口可以telnet的解决方法
    1、问题描述防火墙已经关闭22端口可以telnet其他端口无法telnet2、解决方法注意:下列命令要用root账号/权限执行2.1、开启防火墙systemctlstartfirewalld2.2、添加要开放的端口该命令以8081端口为示例firewall-cmd--add-port=8081/tcp2.3、重新加载防......
  • Java 打印在控制台 方法
    Java打印在控制台的方法在Java编程语言中,控制台是一种常用的输出方式。它允许程序员在调试和开发过程中查看程序的输出结果。本文将介绍几种在Java中打印输出的方法,并提供相应的代码示例。1.使用System.out.println()System.out.println()是Java中最常用的打印输出方法之一。......
  • 椭球面拟合方法及一般多项式函数拟合拓展
    基于对一般二次曲面拟合效果的不满,特地整理这一篇文章。不加任何限制的一般二次曲面拟合在机器视觉实际应用时会出现很多意外的情况。比如文章《匹配位姿拟合求精方法-兜尼完-博客园(cnblogs.com)》和《9点拟合梯度边缘亚像素方法-兜尼完-博客园(cnblogs.com)》,这两种方......
  • 大数据量时生成DataFrame避免使用效率低的append方法
    转载请注明出处:https://www.cnblogs.com/oceanicstar/p/10900332.html append方法可以很方便地拼接两个DataFramedf1.append(df2)>AB>1A1B1>2A2B2>3A3B3>4A4B4但数据量大时生成DataFrame,应避免使用append方法因为:    与python列表中的appe......
  • 2023-7-27WPF的ContextMenu的传参绑定方式
    WPF的ContextMenu的绑定方式【作者】长生ContextMenu为何不能正常绑定在wpf中ContextMenu和ToolTip一样都是弹出层,与VisualTree已经分离了,只不过ToolTip在wpf中有进行特殊处理,所以可以正常绑定。个人觉得ContextMenu绑定的最可靠的方式首先添加BindingProxy类,继承Freezab......
  • appuim 做自动化测试的时候遇到的一些报错 附解决方法
    1、selenium.common.exceptions.InvalidElementStateException:Message:UnabletoperformW3Cactions.Checkthelogcatoutputforpossibleerrorreportsandmakesureyourinputactionschainisvalid.2、http.client.RemoteDisconnected:Remoteendclosedconn......
  • 使用@JsonFormat引起的时间比正常时间慢8小时解决方法
    转:使用@JsonFormat引起的时间比正常时间慢8小时解决方法 @JsonFormat,默认情况下timeZone为GMT(即标准时区),所以会造成输出少8小时。改为北京时间,方式如下:@JsonFormat(pattern="yyyy-MM-ddHH:mm:ss",timezone="GMT+8")      ......
  • UUID类randomUUID()方法
    1、randomUUID()方法用于返回类型4UUID,它由伪随机数生成器构造//uuid文件名通用唯一识别码Stringuuid=UUID.randomUUID().toString(); ......
  • 配置文件的介绍,静态文件的配置,request对象请求方法,pycharm连接数据库,Django连接My
    配置文件的介绍#注册应用的INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.c......