python classmethod修饰符

class A(object):
# 属性默认为类属性(可以给直接被类本身调用)
num = "类属性"

# 实例化方法(必须实例化类之后才能被调用)
def func1(self): # self : 表示实例化类后的地址id
print("func1")
print(self)

# 类方法(不需要实例化类就可以被类本身调用)
@classmethod
def func2(cls): # cls : 表示没用被实例化的类本身
print("func2")
print(cls)
print(cls.num)
cls().func1()

# 不传递传递默认self参数的方法(该方法也是可以直接被类调用的,但是这样做不标准)

def func3():
print("func3")
print(A.num) # 属性是可以直接用类本身调用的


# add=A()
# add.func1()
# A.func1() 这样调用是会报错:因为func1()调用时需要默认传递实例化类后的地址id参数,如果不实例化类是无法调用的
A.func2()
A.func3()

运行后
结果如下

 

 

运行A.func1()后的结果,因为没有实例化

 

 

运行

add=A()
add.func1()
之后

 

 

 


 
posted @ 2022-02-18 17:45  刘佳芳  阅读(20)  评论(0编辑  收藏  举报