程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python静态方法@使用,类或函数调用之带括号、不带括号

hfteth 2025-05-23 17:18:42 技术文章 2 ℃

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) # <function methodS.withK at 0x0000020F0795A700> # 不带括号时,得到的结果是一个对象
print(b(12)) # 144

# 类实例化以后,变量可能被init处理,从而改变初始值;
print(methodS('名字').y) # 456  初始值 123 变为了 456
print(methodS.y) # 初始值 123 没变



最近发表
标签列表