Python实例方法、类方法和类方法静态方法浅析

开发 后端
类方法也可以进行更细致的划分,具体可分为类方法、实例方法和静态方法。

[[394623]]

一、前言

类方法也可以进行更细致的划分,具体可分为类方法、实例方法和静态方法。

二、案例详解

实例方法

通常情况下,在类中定义的方法默认都是实例方法。

例:

  1. class CLanguage: 
  2.     # 类构造方法,也属于实例方法 
  3.     def __init__(self): 
  4.         self.name = "百度" 
  5.         self.add = "www.baidu.com" 
  6.  
  7.     # 下面定义了一个say实例方法 
  8.     def say(self): 
  9.         print("正在调用 say() 实例方法"

调用say()方法,实现功能。

  1. clang = CLanguage() 
  2. clang.say() 

运行结果:

注:

实例方法最少也要包含一个 self 参数,用于绑定调用此方法的实例对象。

类方法

Python 类方法和实例方法相似,它最少也要包含一个参数,只不过类方法中通常将其命名为 cls,Python 会自动将类本身绑定给 cls 参数(注意,绑定的不是类对象)。所以在调用类方法时,无需显式为 cls 参数传参。

和实例方法最大的不同在于,类方法需要使用@classmethod修饰符进行修饰。

例:

  1. class ass: 
  2.     #类构造方法,也属于实例方法 
  3.     def __init__(self): 
  4.         self.name = "百度" 
  5.         self.add = "www.baidu.com" 
  6.     #定义了一个类方法 
  7.     @classmethod 
  8.     def info(cls): 
  9.         print("正在调用类方法",cls) 

如果没有 @classmethod,则 Python 解释器会将 fly() 方法认定为实例方法,而不是类方法。

类方法推荐使用类名直接调用。

  1. #使用类名直接调用类方法 
  2. ass.info() 
  3. #使用类对象调用类方法 
  4. clang = ass() 
  5. clang.info() 

运行结果:

类静态方法

静态方法定义在类这个空间(类命名空间)中,而函数则定义在程序所在的空间(全局命名空间)中。

静态方法没有类似 self、cls 这样的特殊参数,因此 Python 解释器不会对它包含的参数做任何类或对象的绑定。

静态方法需要使用@staticmethod修饰。

例:

  1. class ass: 
  2.     @staticmethod 
  3.     def info(nameadd): 
  4.         print(nameadd

静态方法可以使用类名,类对象两种方式进行调用。

  1. # 使用类名直接调用静态方法 
  2. ass.info("百度1""www.baidu.com"
  3. # 使用类对象调用静态方法 
  4. clang = ass() 
  5. clang.info("百度2""www.baidu.com"

运行结果:

三、总结

本文基于Python基础,介绍了实例方法、类方法和类方法静态方法,通过实际案例讲解了三种方法的不同用法,通过代码演示,运行效果图的展示,能够帮助读者更好的理解。

欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

 

代码很简单,希望对你学习有帮助。

 

责任编辑:武晓燕 来源: Go语言进阶学习
相关推荐

2010-08-13 09:35:08

C#静态

2009-09-18 13:47:17

CLR类库

2012-05-23 12:55:39

Java实例化

2021-10-08 20:11:40

类方法静态

2021-03-08 10:47:44

Python类方法静态方法

2009-12-21 16:52:52

静态路由设置

2009-08-28 12:19:19

C#静态方法

2011-07-25 15:46:10

iPhone 动态

2009-09-09 11:28:40

Scala类

2015-03-03 09:19:12

UIScrollVie

2011-06-28 10:55:20

C#接口抽象类

2009-08-28 12:31:06

C#静态方法

2009-08-28 12:47:30

C#静态方法应用

2009-07-24 10:53:51

ASP.NET实现静态

2023-07-03 08:10:51

2021-08-16 09:35:34

Collections Java开发

2009-07-20 16:56:51

Scala类的定义

2009-08-28 12:41:49

静态方法与非静态方法

2019-12-27 15:05:51

Python类方法装饰器

2021-03-22 09:56:01

Java基础System类Static
点赞
收藏

51CTO技术栈公众号