自我 Python 类

self in Python classes

我知道 Python 方法中的第一个参数将是此 class 的一个实例。所以我们需要使用 "self" 作为方法中的第一个参数。但是我们是否也应该在以 "self." 开头的方法中指定属性(变量)?

即使我没有在他的属性中指定 self,我的方法仍然有效:

class Test:
  def y(self, x):
    c = x + 3
    print(c)

t = Test()
t.y(2)
5

class Test:
  def y(self, x):
    self.c = x + 3
    print(self.c)

t = Test()
t.y(2)
5

我需要在 "self.a" 之类的方法中指定一个属性,而不仅仅是 "a"?

在哪些情况下第一个示例不起作用但第二个示例可以?想看看他们两个之间真正不同的情况,因为现在从我的角度来看他们的行为是一样的。

您在 class 方法中执行 self.attribute_name 的原因是对该实例属性执行计算,而不是使用随机 variable.For 示例

class Car:
  def __init__(self,size):
      self.size = size

  def can_accomodate(self,number_of_people):
      return self.size> number_of_people

  def change_size(self,new_size):
      self.size=new_size

   #works but bad practice      

   def can_accomodate_v2(self,size,number_of_people):
       return size> number_of_people

 c = Car(5)
 print(c.can_accomodate(2))
 print(c.can_accomodate_v2(4,2))

在上面的示例中,您可以看到 can_accomodate 使用的 self.size 而 can_accomodate_v2 传递的大小变量是错误的 practice.Both 将起作用,但 v2 是一个不好的做法,不应该 used.You 可以将参数传递给与 instance/class 无关的 class 方法,例如 can_accomodate 函数中的 "number_of_people"。 希望这可以帮助。