Python 为什么不';我不需要写最后两个参数吗?(自我,第一,最后)

Python 为什么不';我不需要写最后两个参数吗?(自我,第一,最后),python,python-3.x,Python,Python 3.x,所以在fullname()中,您应该只使用self。我不明白为什么我不应该写第一个和最后一个参数。有一个相当详细的答案(应该解释self的目的),但总结一下: Python使用self参数(可以使用任何变量名,但它必须是类的方法中的第一个变量名,并且在该类中必须保持相同)来引用调用该方法的类的实例,并在调用该方法时自动为您传递该参数 因此,self参数将访问对象的所有实例变量。在本例中,您在\uuu init\uuuu函数中声明了self.first、self.last、self.pay和sel

所以在
fullname()
中,您应该只使用
self
。我不明白为什么我不应该写第一个和最后一个参数。

有一个相当详细的答案(应该解释self的目的),但总结一下:

Python使用
self
参数(可以使用任何变量名,但它必须是类的方法中的第一个变量名,并且在该类中必须保持相同)来引用调用该方法的类的实例,并在调用该方法时自动为您传递该参数


因此,
self
参数将访问对象的所有实例变量。在本例中,您在
\uuu init\uuuu
函数中声明了
self.first
self.last
self.pay
self.email
,该函数将所有这些变量转换为实例变量。这意味着,在该实例上被调用的任何方法都可以通过调用
self来访问它们。
就像您在
\uuuu init\uuuuu

中设置的那样,因为类属性就是这样工作的。您可以用一个例子更新您的问题:“
您应该只使用self
”?您所说的“只使用self”是什么意思?您确实可以使用
self.first
self.last
,也可以使用
self.pay
self.email
。您可以添加一个您认为不应该执行的操作的示例吗?应该是:“所有这些变量都包含在实例变量中”@MCBama,那么我在该类中定义的任何函数都可以访问init方法中的变量?@DiogoDaniel本质上是这样的。但实际上,您可以随时在任何方法中定义实例变量。在
self
上定义变量后,该变量即成为实例变量。这意味着如果您有一个声明了
self.bar=True
的函数
def foo(self)
,并且调用了该方法,那么您可以在
firstname(self)中访问
self.bar
函数。您已经可以访问
\uuuuu init\uuuu
函数中声明的所有函数的原因是,init是构造函数,在创建实例时会自动调用。@DiogoDaniel乐于帮助:)。希望能帮你清理一些东西。祝你在余下的项目中好运!
class Employee:
    def __init__(self, first, last, pay):
        self.first = first
        self.last = last
        self.pay = pay
        self.email = first + "." + last + "@company.com"

    def fullname(self):
        return "{} {}".format(self.first, self.last)