我觉得几周前我和你在同一条船上,虽然他们仍然很不稳定,但我会尽力向你解释自我和初始化。请温柔,其他评论者!;)
我将尝试首先解释“自我”,因为它可能会使 init 更清楚。当我想上课时,我可以这样做:
class Car:
# I can set attributes here ( maybe I want all my cars to have a:
size = 0
# well eventually my car object is going to need to do stuff, so I need methods -
# methods are like functions but they are only usable by the class that encompasses them!
# I create them the same way, just inside the indentation of the class, using def func():
def drive(self):
print "vroom"
# pretend this is the function that I would call to make the car drive.
好的。在这里,我们有一些东西要讨论这个布局。我们已经定义了汽车应该做什么,但我们还没有做出任何东西。(我保证这是所有相关的!)为了使汽车的实例(单次出现),我们可以将汽车对象分配给一个新变量:
myCar = car()
现在我可以使用我们在汽车类中定义的所有方法——比如驾驶!我们将通过键入以下内容来调用该函数:
myCar.drive()
这将打印“vroom”我可以通过执行以下操作在同一程序中创建 car() 类的第二个实例(尽管这将是一个完全不同的对象):
newCar = car()
现在,开始部分来了……我做了一个非常简单的课程,课程变得非常庞大和可怕,实际上不可能在一个晚上全部理解它们,但我现在要向你解释自己。
如果我有其他需要引用该对象的方法,我用来保存我创建的汽车对象的变量“myCar”将成为“self”参数。本质上,myCar.vroom() 与 self.vroom() 相同,如果我需要在类的另一个方法中引用 .vroom()。
总结一下,我们有一些看起来像这样的东西:
class Car:
size = 0 # a global attribute for all car objects
def drive(self): #self is the argument!
print "vroom!"
myCar = car() # we've initialized the class but havent used it here yet!
myCar.drive() # this prints "vroom"
另一种思考方式是说参数,就像在普通函数中一样,是 self 只是调用该函数的任何对象的占位符。
现在,如果这有道理真棒,如果没有,我会再次编辑它。def init (self): 使用相同的理论,从类中获取单个对象,并在每次类创建对象时为其提供指令。
class car:
def __init__(self): # needs self, to refer to itself, right?
self.name = name # now we can assign unique variables to each INSTANCE of the car class.
你可以使用 def init并用它做一些疯狂的事情,比如在它里面你可以立即调用其他方法和东西。基本上,这就像说'嘿,对象!你还活着,去检查init函数里面有什么,你需要拥有所有这些东西!去!
让我知道这是否有帮助,或者我是否可以更清楚地说明。就像我说的,我几乎没有完全理解这一切,所以也许我的解释需要一些工作。干杯:)