在类中或在python3的__init__中创建变量

时间:2018-10-11 16:24:07

标签: python python-3.x class initialization member

在类中创建变量并在__init__中为其赋值,然后直接在__init__中创建变量之间有何区别?

例如:

示例1:

# I create the var color outside __init__ and assigns a value to it inside __init__

class Car:
   color = ""
   def __init__(self):
      self.color = "green"

示例2:

# I directly create the variable inside __init__ and not outside __init__ and just assign a value in __init__

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

有什么不同吗?

2 个答案:

答案 0 :(得分:1)

第一个示例具有两个不同的color属性:color = ""创建一个 class 属性,如果实例没有自己的实例,将使用show值。 self.color = "green"显式创建一个值为"green" instance 属性。

在第二个示例中,没有类属性,并且您使用__init__的参数而不是硬编码值来定义实例属性。

答案 1 :(得分:0)

__init__是用于在创建对象时初始化对象的构造函数。

-> __init__(self): self.color='green'

这将创建一个类变量,并且在创建对象时您将无法传递新值。

->__init__(self,color): self.color=color

另一方面,上面的代码将允许您将color属性分配给对象。