• python 类中的self


    今天工作中写python代码,在def函数定义的时候总要写一个self参数,不明白何意思…百度了一下这个self代表的是类的实例,不是类,所以学习一下相关知识。


    下面这个Sms类中的函数是用post请求获取数据,获取的数据是json格式,取json中的body

    在send函数中我们就定义了变量self,但其实在函数内部并没有用到它

    import requests
    import json
    
    class Sms():
        def send(self, url, body):
             request = requests.post(url, json=body)
             return request.json()

    在调用的时候也需要写这个self:

    def signature(self):
      request = self.interf.send(self.yam.read('url')) # 这里的read是另一个函数

    那么明确self的用处:

    1)self只有在类的方法中才会有,独立的函数或方法是不必带有self的。

    2)self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

    3)self名称不是必须的,在python中self不是关键词,定义成a或b或其他名字都可以,只是约定俗成我们定义成了self。

    4)self指的是类实例对象本身,不是类本身。

      例1:

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

      结果:

    <__main__.Person object at 0x000002744FEA8208>  

      上述例子中,self指向【Person】的实例【p】

    此外:

    5)self在定义的时候需要定义,但是在调用的时候会自动传入

    6)self总是指调用时的类的实例

      例2:

    class Parent:
        def pprt(self):
            print(self)
    
    
    class Child(Parent):
        def cprt(self):
            print(self)
    
    c = Child()
    c.cprt()
    c.pprt()
    p = Parent()
    p.pprt()

      结果:

    <__main__.Child object at 0x000001FC9E7B8BE0>
    <__main__.Child object at 0x000001FC9E7B8BE0>
    <__main__.Parent object at 0x000001FC9E7B8C50>

      上述例子中,在继承时,传入的是哪个实例,self就是那个传入的实例,而不是指定义了self类的实例.


    暂时了解了这么多,然后关于类和类的实例,还不是很懂(之前学的python白学了…),所以后续还需要再学习面向对象这一方面

  • 相关阅读:
    gearman作业服务器的工作心得
    linux下crontab 定时执行脚本笔记
    node.js async流程控制器--queue(队列)
    解决node.js express框架的跨域问题;
    2014年11月5号工作中遇见的一些问题,记录一下.
    获取表的下一个自增ID
    一个防止页面刷新后,ajax请求的数据被重置的方法
    html元素的overflow详解
    SQL 查询 技巧
    SQL RAISERROR 用法
  • 原文地址:https://www.cnblogs.com/RebeccaG/p/11726233.html
Copyright © 2020-2023  润新知