Python静态方法@使用,类或函数调用之带括号、不带括号
20221209星期五:
1,函数加了静态 @staticmethod ,类不进行实例化,就可以进行调用函数
2,函数调用带括号,调用的是函数的执行结果;
3,函数调用不带括号,调用的是函数本身,得到的是一个对象
# class methodS: 或者 class methodS(): 这里可以带括号,也可以不带括号,区别不大:
class methodS:
y = '123'
def __init__(self,name):
self.y = '456'
self.name= name
print('init方法')
def _name(self):
print('_name:',self.name)
# 使用了 @staticmethod 后,def static_method(): 括号中,不需要约定的默认参数self:
# 且不实例化的情况下,直接访问该函数:
# 静态方法就是 类对外部函数的封装,有助于优化代码结构,和提高程序的可读性:
@staticmethod
def static_method():
print('静态方法调用')
@staticmethod
def withK(num):
total = num**2
return total
"""
类调用不带括号,就是不启动实例
加括号的 是类的实例化;
类实例化以后,变量可能被init处理,从而改变初始值;
如果函数没有加 @staticmethod ,那么 类就必须实例化,然后才能调用该函数,即
"""
'''
init方法
_name: 名字
============
静态方法调用
'''
methodS('名字')._name()
print("============")
methodS.static_method()
"""
函数不加括号:
1,不带括号时,调用的是函数本身,是整个函数体,是一个函数对象,不需要等待该函数执行完成,得到的结果是一个对象
2,带括号(参数或者无参),调用的是函数的执行结果,须等待该函数执行完成的结果
"""
a = methodS.withK(6)
print(a) # 36
b = methodS.withK
print(b) # # 不带括号时,得到的结果是一个对象
print(b(12)) # 144
# 类实例化以后,变量可能被init处理,从而改变初始值;
print(methodS('名字').y) # 456 初始值 123 变为了 456
print(methodS.y) # 初始值 123 没变