一、classmethod
class Goods:
__d = 0.8
@classmethod #类方法
def c_d(cls,new_d):
cls.__d = new_d # 把他变成私有变量
@classmethod
def get_d(cls):
return cls.__d
# apple = Goods() # 不需要实例化
Goods.c_d(0.75)
print(Goods.get_d()) # 0.75
类方法
调用:不需要实例化 直接用类名调用就好
定义:不用接受
self
参数,默认传
cls
,
cls
就代表当前方法所在的类
什么时候用类方法?
需要使用静态变量 且 不需要和对象相关的任何操作的时候
二、staticmethod
静态方法:
如果这个方法 既不需要操作静态变量,也不需要使用对象相关的操作,就使用静态方法
class A:
@staticmethod
def func(name): #静态方法
print(123)
A.func('alex') # 123
NA:
面向对象编程:
专门为面向对象编程提供的一个方法——
staticmethod
它完全可以当做普通函数去用,只不过这个函数要通过类名.函数名调用
其他 传参 返回值 完全没有区别
类里面,一共可以定义这三种方法:
普通方法 self
类方法 cls
静态方法
静态方法和类方法:
都是直接可以使用类名调用,也可以对象调用,但是没必要实例化在调用。麻烦。
普通方法:对象调用
AI理解理解
class A:
@staticmethod
def func1(name): #静态方法
print(123)
@classmethod
def func2(cls): # 静态方法
print(123)
def func3(self):pass
a = A()
print(a.func1) #静态方法
print(a.func2) #类方法 : # 绑定到A类的func
print(a.func3) #普通方法:# 绑定到A类对象的func
结果:
孙耀威----爱的故事(上集)