赞
赏
Python 类中的方法有三种形式,分别为:类方法、实例方法 和 静态方法。
Python 的类方法类似于 构造函数,最少也要包含一个 参数,只不过,类方法中通常将其命名为 cls,且 Python 会自动将类本身绑定给 cls 参数。因此,在调用类方法时,无需显式传递 cls 参数。
和 self 一样,cls 参数的命名也不是规定的(可以随意命名),只是 Python 程序员约定俗称的习惯而已。除此之外,和构造方法最大的不同在于,类方法需要使用 @classmethod
进行修饰。
class People:
money = 10000
@classmethod
def func_name(cls, params):
pass
我们定义了一个 People 类,People 类有一个方法 func_name,func_name 方法是用 @classmethod
修饰的,因此它是一个类方法。
类方法的第一个参数一般为 cls,后面可以有任意多个参数。
Python 的类方法调用方法有两种,一种是通过 “类名.方法名” 的方法来调用,另一种是通过 “对象.方法名” 的方法来调用,不过推荐使用 “类名.方法名” 的方式来调用。
People.func_name(params)
参数 | 描述 |
---|---|
People | 类。 |
func_name | 类方法。 |
params | 参数。 |
通过 “类名.方法名” 的方法,调用类方法。
p.func_name(params)
参数 | 描述 |
---|---|
p | 类对象。 |
func_name | 类方法。 |
params | 参数。 |
通过 “对象.方法名” 的方法,调用类方法。
通过类名访问类方法
print("嗨客网(www.haicoder.net)")
class Student:
@classmethod
def s_info(cls):
print("call Student classmethod")
Student.s_info()
程序运行后,控制台输出如下:
我们创建了一个类 Student,接着,为该类添加了一个类方法 s_info
,其中类方法必须使用 @classmethod
修饰,且第一个参数必须是 cls,最后,我们使用 “类名.类方法” 的形式调用类方法。
通过对象访问类方法
print("嗨客网(www.haicoder.net)")
class Student:
@classmethod
def s_info(cls):
print("call Student classmethod")
stu = Student()
stu.s_info()
程序运行后,控制台输出如下:
我们创建了一个类 Student,接着,为该类添加了一个类方法 s_info
,最后,创建了一个 Student 类的实例 stu,并且通过 stu 来调用类方法。
Python 的类方法类似于构造函数,最少也要包含一个参数,只不过,类方法中通常将其命名为 cls,且 Python 会自动将类本身绑定给 cls 参数。因此,在调用类方法时,无需显式传递 cls 参数。
和 self 一样,cls 参数的命名也不是规定的(可以随意命名),只是 Python 程序员约定俗称的习惯而已。除此之外,和构造方法最大的不同在于,类方法需要使用 @classmethod
进行修饰。Python 类方法定义语法:
class People:
money = 10000
@classmethod
def func_name(cls, params):
pass
Python 的类方法调用方法有两种,一种是通过 “类名.方法名” 的方法来调用,另一种是通过 “对象.方法名” 的方法来调用,不过推荐使用 “类名.方法名” 的方式来调用。