`

一开始真受不了啊,staticmethod & classmethod

阅读更多
ref:http://www.cnblogs.com/chenzehe/archive/2010/09/01/1814639.html

classmethod:类方法
staticmethod:静态方法

在python中,静态方法和类方法都是可以通过类对象和类对象实例访问。但是区别是:

@classmethod 是一个函数修饰符,它表示接下来的是一个类方法,而对于平常我们见到的则叫做实例方法。 类方法的第一个参数cls,而实例方法的第一个参数是self,表示该类的一个实例。
普通对象方法至少需要一个self参数,代表类对象实例
类方法有类变量cls传入,从而可以用cls做一些相关的处理。并且有子类继承时,调用该类方法时,传入的类变量cls是子类,而非父类。 对于类方法,可以通过类来调用,就像C.f(),有点类似C++中的静态方法, 也可以通过类的一个实例来调用,就像C().f(),这里C(),写成这样之后它就是类的一个实例了。
静态方法则没有,它基本上跟一个全局函数相同,一般来说用的很少
分享到:
评论

相关推荐

    一百道经典python初级面试题

    #### @staticmethod和@classmethod Python中的方法可以分为三种类型:实例方法、静态方法和类方法。 - 实例方法:是通过类的实例调用的方法,它需要第一个参数为实例的引用(通常命名为self)。实例方法可以访问...

    符合Python风格的对象1

    - `staticmethod` 修饰符则定义了一个不接收类作为第一个参数的方法,它更像是一个普通函数,只是在类中定义。静态方法不与类的实例有任何绑定,也不依赖于类的状态。 5. **`__hash__()`**: - 对象的哈希值用于...

    python面向对象学习总结借鉴.pdf

    类方法通过`@classmethod`装饰器定义,第一个参数是`cls`,代表类自身;静态方法通过`@staticmethod`装饰器定义,不绑定到任何特定的类实例。 下面是一个关于类方法和静态方法的示例: ```python class Counter: ...

    python面试题

    - **`@staticmethod`**: 定义一个静态方法,该方法不属于任何实例,也不属于类本身。它只是简单地绑定到类,并可以在没有类实例的情况下调用。 - **`@classmethod`**: 定义一个类方法,该方法的第一个参数是类本身...

    Python基础——笔试面试利器

    在此示例中,`a` 的值并没有改变,因为在 `fun` 函数内部,`a` 被重新赋值为一个新的不可更改对象 2,而原来的对象 1 没有任何变化。 2. **可更改对象**:当传递可更改对象时,函数内部可以修改该对象的内容。这是...

    Python 基础课程《11.面向对象》

    这意味着如果你修改了一个类属性,那么所有实例都会受到影响。 ```python class Person: species = "human" # 类属性 def __init__(self, name, age): self.name = name self.age = age ``` **10.3.4 实例方法...

    python编程

    Python是一种高级编程语言,以其简洁的语法和强大的功能受到广泛欢迎。它支持多种编程范式,包括面向过程、面向对象和函数式编程等。 #### 二、模块与包 模块是Python中的一个重要概念,指的是一个包含定义和语句...

    第11章 python类与对象-python基础,快速入门.pptx

    - **封装**:通过信息隐藏,保护内部数据不受外界干扰,只暴露必要的接口供外部使用。 - **继承**:一个类可以从另一个类继承属性和方法,实现代码重用和扩展。 - **多态**:不同类的对象可以响应同一消息,即...

    Python内置函数案例演示.pdf

    Python作为一门广泛使用的高级编程语言,其内置函数的丰富性和易用性是其受欢迎的原因之一。Python的内置函数可以直接在Python环境中使用,无需额外导入模块。初学者通过学习和应用这些内置函数,可以更快速地编写...

    2021-2022计算机二级等级考试试题及答案No.13020.docx

    类方法同样可以直接通过类名调用,不受实例化的影响。 2. 结构化程序设计:结构化程序设计强调使用顺序、分支(if-else)和循环(for, while)三种基本结构,不鼓励使用`goto`语句,以提高代码的可读性和可维护性。...

    10 个高级 Python 面试问题.docx

    Python是一种广泛使用的高级编程语言,以其易读性、丰富的库和强大的功能而受到开发者们的喜爱。随着Python在各个领域的广泛应用,对于Python开发者的面试要求也日益提高,特别是对于中高级职位,深入理解Python的...

    Python3.5.2 语言程序设计基础 第2版本.pdf

    同时,装饰器(decorators)的语法也有所改进,可以通过`@classmethod`和`@staticmethod`直接定义类方法和静态方法。 在错误处理和调试方面,Python3.5.2提供了一个新的异常链机制,它可以显示引发异常的完整调用...

    记录学习:流畅的Python 一书的过程,并整理成代码和笔记.zip

    《流畅的Python》是一本广受好评的编程书籍,作者是Luciano Ramalho,它深入探讨了Python语言的高级特性和最佳实践。通过阅读这本书并记录学习过程,我们可以掌握如何编写更加优雅、高效的Python代码。这个压缩包...

    Python面试内容很多,干货满满

    在这个例子中,虽然在`fun`函数内部将`a`的值设置为2,但由于整型是不可变类型,所以外部的`a`值并没有受到影响。 **示例**: ```python a = [] def fun(a): a.append(1) fun(a) print(a) # 输出:[1] ``` 这里,...

    python官方3.2.3.amd64版本msi安装包

    Python是世界上最受欢迎的编程语言之一,特别是在数据科学、Web开发和自动化领域。Python 3.2.3 是Python 3.x系列的一个早期版本,专为64位(amd64)架构设计。这个"python-3.2.3.amd64.msi"安装包是一个Microsoft ...

    python(1).zip

    10. **装饰器和上下文管理器**:装饰器(decorator)用于在不修改原函数代码的情况下扩展其功能,如@staticmethod、@classmethod等。上下文管理器(context manager)通过with语句处理资源的获取和释放,如文件操作...

    11.类和对象1

    类方法可以用`@classmethod`装饰器标识,可以被类或其对象调用,而静态方法用`@staticmethod`装饰器,不与特定实例绑定,可以直接通过类名或对象名调用。 6. **面向对象的特性**: 面向对象编程的三大特性是封装、...

    Python_编码风格指南中译版

    函数和方法修饰符,如`@staticmethod`和`@classmethod`,用于定义静态方法和类方法,分别不需要实例或类作为第一个参数。它们应当在需要的时候使用,以提高代码的组织性和可读性。 ##### 1.1.18 线程 虽然Python...

    2021-2022计算机二级等级考试试题及答案No.9037.docx

    - **静态方法**:用`@staticmethod`修饰,不绑定任何特定的类或实例,可以直接通过类或实例调用,通常用于辅助函数。 13. **SQL查询条件**:在SQL中,使用`BETWEEN`关键字可以查询介于两个值之间的数据,所以正确...

    python stackoverflow经典问题集合

    16. 类中的静态变量可以通过装饰器@staticmethod和@classmethod来定义。 17. 移除换行符可以使用字符串的replace()方法或者strip()方法。 18. Python中切片操作是通过冒号(:)来实现对列表或序列的切片,是一种...

Global site tag (gtag.js) - Google Analytics