Python self
时间:2020-02-23 14:43:16 来源:igfitidea点击:
在本程序中,我们将研究Python self的用法。
Python self
Python不是为面向对象编程范例而设计的语言。
因此,在Python中创建静态方法不是直接的。
让我们看看如何完成此操作:
class Person: def static_method(): print("This is a static method")
现在,要创建一种可以在真实的"人"对象上运行的方法,我们需要为其提供对该对象的引用。
因此,我们可以将self
用作:
class Person: def object_method(self): print("I can do something with self.")
接下来,让我们看看如何使用它来访问类构造函数本身中的字段。
Python类自构造函数
Pythonself
也可以用来引用类中的变量字段:
class Person: # name made in constructor def __init__(self, n): self.name = n def get_person_name(self): return self.name
在上面的代码片段中," self"是指整个" Person"类的名称变量。
请注意,如果我们在方法中有一个变量,则self将不起作用。
该变量仅在该方法运行时才存在,因此是该方法的局部变量。
为了定义全局字段(完整类的变量),我们需要在类方法之外定义它们。
请参阅python变量范围。
self是关键字吗?
" self"在Python中的很多地方都被使用,人们以为它是一个关键字。
但是与C++中的" this"不同," self"不是关键字。
实际上,我们可以为方法的第一个参数使用任何名称,但强烈建议您遵循将其称为" self"的约定。
这意味着最后一个类可以做成:
class Person: #name made in constructor def __init__(another, n): another.name = n; def get_person_name(another): return another.name
看看我这次如何使用"另一个"吗?它的工作方式与" self"完全相同。
我们应该将自己传递给方法吗?
上面的解释提出了一个新问题,我们是否应该将self
传递给方法?让我们考虑Person类,其中包含定义为:
def something(another, arg1, arg2): pass
如果personMe
是该类的实例,并且调用了personMe.something(arg1,arg2)
,则python在内部将其转换为:
Person.something(personMe, arg1, arg2)
" self"变量是指对象本身。