广告
返回顶部
首页 > 资讯 > 后端开发 > Python >关于python中的self,ins ,
  • 118
分享到

关于python中的self,ins ,

pythonins 2023-01-31 02:01:33 118人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

关于python中的self,ins,cls的解释参考下面两篇博文首先是self: (参考Http://www.cnblogs.com/linuxcat/arcHive/2012/01/05/2220997.html)self比较好理解,s

关于python中的self,ins,cls的解释参考下面两篇博文

首先是self: (参考Http://www.cnblogs.com/linuxcat/arcHive/2012/01/05/2220997.html

  1. self比较好理解,self指的是类实例对象本身(注意:不是类本身)

    class Person:
             def _init_(self,name):
                      self.name=name
             def sayhello(self):
                      print 'My name is:',self.name
    p=Person('Tom')
    print p


  2. 为什么不是指向类本身呢,如下例子:

    class Person:
        def _init_(self,name):
            self.name=name
        def sayhello(self):
            print 'My name is:',self.name
    p=Person('Tom')
    p1 = Person('Jim')
    print p

    如果self指向类本身,那么当有多个实例对象时,self指向哪一个呢?

  3. 如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用

    class A(object):
          def foo1(self):
              print "Hello",self
          @staticmethod
          def foo2():
              print "hello"
          @claSSMethod
          def foo3(cls):
              print "hello",cl

二、上面例子已经看到cls, 对于classmethod,它的第一个参数不是self,是cls,它表示这个类本身。

        (参考http://blog.csdn.net/daijiguo/article/details/52664188)

class A(object):
      def foo1(self):
          print "Hello",self
      @staticmethod
      def foo2():
          print "hello"
      @classmethod
      def foo3(cls):
          print "hello",cls   # cls就是类A本身

a = A()

a.foo1()

>>hello <__main__.A object at 0x03169110>

A.foo1(a)   #这里传入实例a,相当于普通方法的self

>>hello <__main__.A object at 0x03169110>

A.foo2()    #这里,由于静态方法没有参数,故可以不传东西

>>hello

A.foo3()    #这里,由于是类方法,因此,它的第一个参数为类本身。

>>hello <class '__main__.A'>

print A     #可以看到,直接输入A,与上面那种调用返回同样的信息。

>><class '__main__.A'>

三、再来看ins  (参考http://Python.jobbole.com/81921/)

class Desc:

    def __get__(self, ins, cls):

        print('self in Desc: %s ' % self )

        print(self, ins, cls)

class Test:

    x = Desc()

    def prt(self):

        print('self in Test: %s' % self)

t = Test()

t.prt()

t.x

运行结果如下:

self in Test: <__main__.Test object at 0x0000000002A570B8>

self in Desc: <__main__.Desc object at 0x000000000283E208>

<__main__.Desc object at 0x000000000283E208> <__main__.Test object at 0x0000000002A570B8> <class '__main__.Test'>


大部分童鞋开始有疑问了,为什么在Desc类中定义的self不是应该是调用它的实例t吗?怎么变成了Desc类的实例了呢?

注意:这里调用的是t.x,也就是说是Test类的实例t的属性x,由于实例t中并没有定义属性x,所以找到了类属性x,而该属性是描述符属性,为Desc类的实例而已,所以此处并没有顶用Test的任何方法。

那么我们如果直接通过类来调用属性x也可以得到相同的结果。

下面是把t.x改为Test.x运行的结果。


self in Test: <__main__.Test object at 0x00000000022570B8>

self in Desc: <__main__.Desc object at 0x000000000223E208>

<__main__.Desc object at 0x000000000223E208> None <class '__main__.Test'>


题外话:由于在很多时候描述符类中仍然需要知道调用该描述符的实例是谁,所以在描述符类中存在第二个参数ins,用来表示调用它的类实例,所以t.x时可 以看到第三行中的运行结果中第二项为<main.Test object at 0x0000000002A570B8>。而采用Test.x进行调用时,由于没有实例,所以返回None。

--结束END--

本文标题: 关于python中的self,ins ,

本文链接: https://www.lsjlt.com/news/186013.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于python中的self,ins ,
    关于python中的self,ins,cls的解释参考下面两篇博文首先是self: (参考http://www.cnblogs.com/linuxcat/archive/2012/01/05/2220997.html)self比较好理解,s...
    99+
    2023-01-31
    python ins
  • 关于对python中self的深入理解
    假设有一个类nameMain(), 如最下面代码 类 : 一个抽象的模板。可以理解为抽象设计图类名:类的名字。查看/实现方式 :print(nameMain)或者print(self...
    99+
    2022-11-11
  • python中的this——self
        #0、python中的self相当于this ,    #1、如果调用成员变量必须使用self,    #2、self不一定叫self可以改变它的名称。    #3、在成员函数中使用self.name变量相当于声明了一个成员变量 ...
    99+
    2023-01-31
    python
  • 终于搞懂了Python中super(XXXX, self).__init__()的作用了
    在使用pytorch框架时,难免要自己定义网络。于是,super(XXXX, self).init(),就成了自定义网络结构时必不可少的第一句。但是,super(XXXX, self...
    99+
    2022-11-11
  • Python中的self怎么使用
    在介绍Python的self用法之前,先来介绍下Python中的类和实例我们知道,面向对象最重要的概念就是类(class)和实例(instance),类是抽象的模板,比如学生这个抽象的事物,可以用一个Student类来表示。而实例是根据类创...
    99+
    2023-05-17
    Python self
  • 如何理解Python中的self
    这篇文章主要介绍了如何理解Python中的self的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何理解Python中的self文章都会有所收获,下面我们一起来看看吧。对于初学Python的同学来说,在clas...
    99+
    2023-07-05
  • 关于python中的setup.py
    目录1. 为什么需要对项目分发打包2. 包分发的始祖:distutils3. 分发工具升级:setuptools4. easy_install 使用指南5. 源码包与二进制包什么区别...
    99+
    2022-11-11
  • python中self的原理是什么
    本篇文章为大家展示了python中self的原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(...
    99+
    2023-06-14
  • 关于python中的IO流
    只要有IO,那么就会发生IOError。所以尽量每次都要使用try...finally#!/usr/bin/env python #-*-coding:utf-8-*- try: f=open("test2.py","r") print...
    99+
    2023-01-31
    python IO
  • Python类中self的含义是什么
    在Python中,`self`是一个惯用的参数名,用于表示对象自身。它在类的方法中作为第一个参数传递,用于访问该对象的属性和方法。当...
    99+
    2023-10-12
    Python
  • 全面理解Python中self的用法
    刚开始学习Python的类写法的时候觉得很是麻烦,为什么定义时需要而调用时又不需要,为什么不能内部简化从而减少我们敲击键盘的次数?你看完这篇文章后就会明白所有的疑问。 self代表类的实例,而非类。 实例来...
    99+
    2022-06-04
    Python
  • Python中关于list、tuple、
    List定义及常用的方法见上一篇博客。 Tuple元组tuple的定义:            tuple是一个有序的元素组成的不可变对象的集合,使用小括号()表示,是可迭代对象 元组中数据的访问            支持索引(下标访问)...
    99+
    2023-01-31
    Python list tuple
  • 关于python中 __init__.p
    python   __init__.py  常见的情况中,我们将自己写好的代码转化为函数的话去调用的话,都是事先写好一个.py结尾的文件,将这个文件copy到当前目录下,或者是在python的sys.path中事先定义好的路径中去。之后在另...
    99+
    2023-01-31
    python
  • 关于Python的JSON
    1、json模块load/loads、dump/dumps区别:(摘自这里)实际上json就是python字典的字符串表示,但是字典作为一个复杂对象是无法直接转换成定义它的代码的字符串,python有一个叫 simplejson的库可以方便...
    99+
    2023-01-31
    Python JSON
  • python中关于xmltodict的使用
    目录python中xmltodict使用xml转换成OrderedDictdict转换成xmlxmltodict模块处理xml数据基本用法1. parse2. unparse总结py...
    99+
    2023-03-14
    python xmltodict python xmltodict使用 python使用xmltodict
  • 关于Python中interval的处理
          最近在对几个取值范围做处理时发现很麻烦,需要判断左右,需要判断开闭合,料想强大的Python一定有人准备好了这样的轮子。搜了一下,果不其然,找到了pyinterval这个包。满心欢喜以为找到正解,发现这个模块过于简单(可能是我...
    99+
    2023-01-31
    Python interval
  • Python类中__init__() 和self的详细解析
    目录1、Python中self的含义2、Python中为何要有self3、首先来看一下__init__()和self对象4、如果没有在__init__中初始化对应的实例变量的话,导致...
    99+
    2022-12-30
    python类中的__init__ python__init__用法 Python类 self
  • Python - 关于Python的变量
    Python的变量是动态的,不需要预先申明,当赋值时自动创建变量,并且Python变量存储的是对象的引用(非变量本身)。Python变量的命名规则与C语言相似,并且在日常使用中一般会遵循以下一些规则:A. 一般不以单下划线“_”开头,因为以...
    99+
    2023-01-31
    变量 Python
  • 23:python中关于缩进
    23.1 缩进的思考                              参考20.1.2  为什么第一条print语句(第11行)参与while循环,打印多次。而,第二条print语句(第15行)不参与循环只打印一次?  难道是第1...
    99+
    2023-01-31
    python
  • 关于Python中No module n
    1.执行代码时报错 错误信息:ModuleNotFoundError: No module named 'requests' 错误截图: 查看python版本命令如下: python -V 查看python版本命令截图如下:2.解决办法1 ...
    99+
    2023-01-31
    Python module
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作