• python类中的self参数和cls参数


    python类里会出现这三个单词,self和cls都可以用别的单词代替,类的方法有三种,

    一是通过def定义的 普通的一般的,需要至少传递一个参数,一般用self,这样的方法必须通过一个类的实例去访问,类似于c++中通过对象去访问;

    二是在def前面加上@classmethod,这种类方法的一个特点就是可以通过类名去调用,但是也必须传递一个参数,一般用cls表示class,表示可以通过类直接调用;

    三是在def前面加上@staticmethod,这种类方法是静态的类方法,类似于c++的静态函数,他的一个特点是参数可以为空,同样支持类名和对象两种调用方式;

    1. self表示一个类的实例对象本身。如果用了staticmethod就无视这个self了,就将这个方法当成一个普通的函数使用了。

    2. cls表是这个类本身。

    3. 更多: 类先调用__new__方法,返回该类的实例对象,这个实例对象就是__init__方法的第一个参数self,即self是__new__的返回值。

    # 代码为证
    class A(object):
        def func1(self):
            print("func1:", self)
        @staticmethod
        def func2():
            print("func2")
        @classmethod
        def func3(cls):
            print("func3:", cls)
    
    
    a = A()
    
    a.func1()  #  最常见的调用方式,但与下面的方式相同
               #  func1: <__main__.A object at 0x0000014788701EB8>
    
    A.func1(a) #  这里传入实例a,相当于普通方法的self
               #  func1: <__main__.A object at 0x0000014788701EB8>
    
    A.func2()  # 这里,由于静态方法没有参数,故可以不传东西
               # func2:
    
    A.func3()  # 这里,由于是类方法,因此,它的第一个参数为类本身。
               # func3: <class '__main__.A'>
    
    print(A)   # 可以看到,直接打印A,与上面那种调用返回同样的信息。
               # <class '__main__.A'>
  • 相关阅读:
    选择法与冒泡法
    递归法把一个整数通过字符串输出,谭浩强教材习题
    十六进制转十进制 2.0
    十六进制转十进制 谭浩强教材课后习题
    链表操作(改)--学生管理
    矩阵转置(有问题待补充)
    win10 PowerShell下安装vim编辑器
    wsl2+.net core+vscode开发调试环境
    git 一些常用的操作命令
    查看数据库所有表数据占用的空间大小
  • 原文地址:https://www.cnblogs.com/nbeee/p/9454175.html
Copyright © 2020-2023  润新知