使用类创建对象,为什么我需要__init __(self,args):?

for*_*ord 2 python class object init

很抱歉发布这样一个奇怪的问题,通常当我感到困惑时,我只是"随身携带",直到我有一个顿悟,然后将其排除,但def __init__(self):在我的课堂内调用似乎完全是多余的,似乎将它留下来也是如此:

class Pet(object):
    type_of_pet = ""
    number_of_legs = 0
    name = ""
Run Code Online (Sandbox Code Playgroud)

让我创建:

fred = pet()
fred.type_of_pet = "alligator"
Run Code Online (Sandbox Code Playgroud)

就像我要把类更改为:

class Pet(object):
    def __init__(self):
         type_of_pet = ""

alice = Pet()
alice.type_of_pet = "Pterodactyl" 
Run Code Online (Sandbox Code Playgroud)

我只是没有得到我需要的原因__init__,而这里的其他线程并不像我希望的那样清晰.有什么我可以做到这个"点击"?

use*_*ica 6

将赋值语句放在类定义中不会声明实例属性; 它设置类属性.如果你这样做,所有的宠物将共享相同的name,type_of_petnumber_of_legs.

__init__ 除其他外,用于设置实例属性:

def __init__(self, type_of_pet, name, number_of_legs):
    self.type_of_pet = type_of_pet
    self.name = name
    self.number_of_legs = number_of_legs
Run Code Online (Sandbox Code Playgroud)

这将在实例上设置属性,而不是类,因此每个对象都有自己的名称,类型和腿数.