Python 中 self 关键字的作用?

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')

直接执行会得到如下错误:

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装饰器。

class MyClass2:

@staticmethod

def myFunc(name):

# name = name

print(name)

# 调用

myClass2 = MyClass2()

myClass2.myFunc('test2')

MyClass2.myFunc('33')

这种表示,这个函数跟具体的实例无关。也就不用再传递self进来了。


本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。


回答:

简单的来说,self 就是指当前类,比如类有两个方法AB,他们此时是相互依赖的,比如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

回到顶部