栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

关于python self与cls的理解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于python self与cls的理解

类的方法有三种:
  • 一、是通过def定义,需要至少传递一个参数,一般用self,这样的方法必须通过一个类的实例去访问;

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

  • 三、是在def前面加上@staticmethod,这种类方法是静态的类方法,参数可以为空,支持类名和对象两种调用方式;

代码示例:
class A(object):
    def __init__(self):
        self.name = "name"

    # 只能通过示例化类的方式来进行调用
    def test001(self):
        print("test001" , self.name)

    # 不通过实例化可以调用,但是只能通过(类名.方法)或(类名.属性)类属性或类方法
    @staticmethod
    def test002():
        print("test002")

    # 不通过实例化可以调用,但是只能通过(cls.方法)或(cls.属性)类属性或类方法
    @classmethod
    def test003(cls):
        print("test003,并下方直接通过类方法调用了test002")
        cls.test002()

    # 不通过实例化可以调用,但是只能通过(类名.方法)或(类名.属性)类属性或类方法
    @staticmethod
    def test004():
        print("test004,并下方通过(类名.方法)的方式调用了test002")
        A.test002()

a=A()
a.test001()    # 输出:test001 name
a.test002()    # 输出:test002
a.test003()    # 输出:test003,并下方通过类方法调用了test002  /n    test002
a.test004()    # 输出:test004,并下方通过(类名.方法)的方式调用了test002  /n   test002
A.test001()    # 报错: TypeError: test001() missing 1 required positional argument: 'self'
A.test002()    # 输出:test002
a.test003()    # 输出:test003,并下方通过类方法调用了test002  /n    test002
a.test004()    # 输出:test004,并下方通过(类名.方法)的方式调用了test002  /n   test002

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887063.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号