Python 中 self 关键字的作用?
题目描述
Python 中的self 表示类的实例,想知道 Python self 关键字的作用,以及这样有什么好处?
题目来源及自己的思路
每次写类方法时,都会默认第一个参数为 self
,否则就会报错,比如下面的代码:
class MyClass: def myFunc(self, name):
self.name = name
print(name)
class MyClass2:
def myFunc(name):
print(name)
相关代码
python">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')
直接执行会得到如下错误:
test1Traceback (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
装饰器。
class MyClass2: @staticmethod
def myFunc(name):
# name = name
print(name)
# 调用
myClass2 = MyClass2()
myClass2.myFunc('test2')
MyClass2.myFunc('33')
这种表示,这个函数跟具体的实例无关。也就不用再传递self
进来了。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
回答:
简单的来说,self
就是指当前类,比如类有两个方法A
和B
,他们此时是相互依赖的,比如A
里面需要调用B
,此时 self
就有用了,常见的应用场景就是,你不可能所有逻辑都在A中写,比如你下载一个文件的时候,A
可能只是选择下载哪个文件,B
中才是真正开始下载这个文件的逻辑
这么解释相信你立马会懂
class Test: def A(self):
print(self.B())
def B(self):
return '我是B'
if __name__ == '__main__':
(Test()).A()
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
回答:
如果你知道java或者javascript中的this,那么self的作用和他们是一样的
self 用于表示类的实例对象。所以在类中定义方法时,第一个参数通常被命名为 self,用于表示该方法的调用者(即类的实例对象本身)。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
以上是 Python 中 self 关键字的作用? 的全部内容, 来源链接: utcz.com/p/938805.html