题目描述
Python 中的self 表示类的实例,想知道 Python self 关键字的作用,以及这样有什么好处?
题目来源及自己的思路
每次写类方法时,都会默认第一个参数为 self
,否则就会报错,比如下面的代码:
class MyClass:
def myFunc(self, name):
self.name = name
print(name)
class MyClass2:
def myFunc(name):
print(name)
相关代码
class MyClass:
def myFunc(self, name):
self.name = name
print(name)
class MyClass2:
def myFunc(name):
# name = name
print(name)
if __name__ == '__main__':
myClass = MyClass()
myClass.myFunc('test1')
myClass2 = MyClass2()
myClass2.myFunc('test2')
直接执行会得到如下错误:
test1
Traceback (most recent call last):
File "XXX\self_q.py", line 17, in <module>
myClass2.myFunc('test2')
TypeError: MyClass2.myFunc() takes 1 positional argument but 2 were given
请教大佬们: Python 中 self
的作用是什么呢,?
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
正如你所说
self 表示类的实例
在一个
class
下面写的函数,默认情况下都是属于实例函数,也就是没办法使用Class.func()
这种方式去调用的。也就是这个方法是属于实例的,需要由Class().func()
这种去调用。在
MyClass2
中,def myFunc(name):
中的name
其实跟def myFunc(self, name)
中的self
是相同作用的。他就是这种约定。
与
实例方法
相对于的还有静态方法
,其实就是给类方法,加个@staticmethod
装饰器。这种表示,这个函数跟具体的实例无关。也就不用再传递
self
进来了。