# 三、类方法 # ## 1、类方法如何调用类属性 ## 通过上面我们已经会定义类了,那么这里讲一下在同一个类里,类方法如何调用类属性的。 直接看个例子吧: ```python class ClassA(): var1 = '两点水' @classmethod def fun1(cls): print('我是 fun1' + cls.var1) ClassA.fun1() ``` 输出结果如下: ``` 我是 fun1两点水 ``` 注意看,在类方法上面多了个 `@classmethod` ,这是干嘛用的呢? 这是用于声明下面的函数是类函数。其实从名字就很好理解了。 class 就是类,method 就是方法。 那是不是一定需要注明这个呢? 答案是是的。 如果你没使用,是会报错的。 ```python class ClassA(): var1 = '两点水' def fun1(cls): print('我是 fun1' + cls.var1) ClassA.fun1() ``` 报错如下: ``` Traceback (most recent call last): File "/Users/twowater/dev/python/test/com/twowater/test.py", line 10, in ClassA.fun1() TypeError: fun1() missing 1 required positional argument: 'cls' ``` 如果没有声明是类方法,方法参数中就没有 `cls` , 就没法通过 `cls` 获取到类属性。 因此类方法,想要调用类属性,需要以下步骤: * 在方法上面,用 `@classmethod` 声明该方法是类方法。只有声明了是类方法,才能使用类属性 * 类方法想要使用类属性,在第一个参数中,需要写上 `cls` , cls 是 class 的缩写,其实意思就是把这个类作为参数,传给自己,这样就可以使用类属性了。 * 类属性的使用方式就是 `cls.变量名` 记住喔,无论是 `@classmethod` 还是 `cls` ,都是不能省去的。 省了都会报错。 ## 2、类方法传参 ## 上面我们学习了类方法如何调用类属性,那么类方法如何传参呢? 其实很简单,跟普通的函数一样,直接增加参数就好了。 这个就直接上例子了: ```python class ClassA(): var1 = '两点水' @classmethod def fun1(cls, age): # 定义了个 age 参数 print('我是 fun1' + cls.var1) print('年龄: ' + str(age)) ClassA.fun1(18) # 多了个参数 ``` 打印的结果: ``` 我是 fun1两点水 年龄: 18 ```