为了账号安全,请及时绑定邮箱和手机立即绑定

为什么是Function不是Method?

这么写和用@static method有什么区别呢?

class A:
	def __init__(self):
		self.a = lambda:'A'
	@staticmethod
	def b():
		return 'B'

https://img1.sycdn.imooc.com//5acf40220001980204910208.jpg

想明白了(大概。。吧)。。lambda相当于函数内的函数,成了闭包:

class B:
	def __init__(self):
		def a():
			return 'A'
		self.a = a
b = B()
b.a  # => Out[10]: <function __main__.B.__init__.<locals>.a>


正在回答

2 回答

它是静态方法:跟class没有一点关系:因为它:1:不用class里的属性,2:不用class里的方法,3:实例化后的对象也没法调用它  所以他是静态方法,静态方法与实例方法一点关系都没有

0 回复 有任何疑惑可以回复我~

手动点赞! 

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

为什么是Function不是Method?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信