资讯专栏INFORMATION COLUMN

classmethod&staticmethod 以及 __slots__

newsning / 735人阅读

摘要:什么是中的它的用途是什么装饰器对应的函数不需要实例化,不需要参数,但第一个参数需要是表示自身类的参数,可以来调用类的属性,类的方法,实例化对象等。

什么是python中的classmethod,它的用途是什么?

classmethod装饰器对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。

class Demo:
    @classmethod
    def klassmeth(*args):
        return args
    """
    Usage::
    >>>Demo.klassmeth()
    >>> (, "span")
    """
        

klasssmeth 返回全部位置参数

不管怎么样调用Demo.klassmenth,它的第一个参数始终是Demo类.

什么是python中的staticmethod,它的用途是什么?

staticmethod是一个将类中的方法静态化,无需实例便可调用.

#!/usr/bin/python
# -*- coding: UTF-8 -*-

class C(object):
@staticmethod
def f():
    print("runoob");

C.f();          # 静态方法无需实例化
cobj = C()
cobj.f()        # 也可以实例化后调用

__slots__用于什么地方?

首先我们要明白一个概念.默认情况下Python在各个实例中名为__dict__的字典里存储的实力属性,为了是底层的散列表提升访问速度,字典会消耗大量内存.

通过__slots__类属性,能节省大量内存.方法事让解释器在元组中存储属性,而不是字典.

继承自超类__slots__属性没有效果,Python只会使用各个类中定义的__slots__属性.

定义__slots__属性之后,实例不能再有__slots__中所列名称之外的其他属性.

如果把__dict__这个名称添加到__slots__中,是一个糟糕的选择.

如果不把__weakref__加入__slots__,实例就不能作为弱引用的目标.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42388.html

相关文章

  • Python学习之路28-符合Python风格的对象

    摘要:本篇继续学习之路,实现更多的特殊方法以让自定义类的行为跟真正的对象一样。之所以要让向量不可变,是因为我们在计算向量的哈希值时需要用到和的哈希值,如果这两个值可变,那向量的哈希值就能随时变化,这将不是一个可散列的对象。 《流畅的Python》笔记。本篇是面向对象惯用方法的第二篇。前一篇讲的是内置对象的结构和行为,本篇则是自定义对象。本篇继续Python学习之路20,实现更多的特殊方法以让...

    Eric 评论0 收藏0
  • 编写符合Python风格的对象

    摘要:自定义向量类型从自定义向量类型入手写出符合风格的对象,这离不开特殊方法的支持。将对象定为不可变的通过使用两个前导下划线。程序员约定使用一个下划线前缀编写受保护的属性即,他们认为应该使用命名约定来避免意外覆盖属性。 导语:本文章记录了本人在学习Python基础之面向对象篇的重点知识及个人心得,打算入门Python的朋友们可以来一起学习并交流。 本文重点: 1、掌握编写Pythonic c...

    ethernet 评论0 收藏0
  • Python类方法与静态方法之间的区别

      小编写这篇文章的主要目的,是讲述一下关于Python的一些小技巧,包括类方法与静态方法之间,存在一些什么区别呢?怎么从真正的意义上去理解关于其不同之间的区别呢?下面就给大家详细的解答下。  前言  在python的类中不仅可以有methods,还可以有变量,这些变量称为类属性,例如如下代码中Book类的TYPES即为类属性。  类中的方法分为3类:  1.实例方法instance method...

    89542767 评论0 收藏0
  • 流畅的python读书笔记-第九章-符合Python风格的对象

    摘要:以便于用户理解的方式返回对象的字符串表示形式。函数会调用函数,对来说,输出的是一个有序对。此外,还有用于支持内置的构造函数的方法。可散列实现了方法,使用推荐的异或运算符计算实例属性的散列值私有属性最好用命名规则来实现这种方式有好有坏 绝对不要使用两个前导下划线,这是很烦人的自私行为。——Ian Bicking 对象表示形式 repr()  以便于开发者理解的方式返回对象的字符串表示形式...

    fai1017 评论0 收藏0
  • 浅聊Python class中的@staticmethod以及@classmethod

    摘要:然而,作为学生代表的我,绝对不允许老师混入进来充当间谍。而且,该方法由所独享,并不需要判断是否为学生。由此,改进为以下版本。得到如下测试代码而对于教学分类的判断,则有以下两种情形。 前言 入学不久之后,我就在想,对于学校的这么多人,这么多教师,这么多学生,以及其他种种事物,能否对应的做一套系统下来呢?随之也跟着思考了起来。 设计 好了,最直观的映入大脑的就是三个实体:人、教师、学生。这...

    baoxl 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<