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"变量是指对象本身。

