在控制台中实例化对象后无法访问对象属性

时间:2016-03-15 23:36:47

标签: python-2.7 object constructor console attributes

我正在使用PyCharm 5.0.4 Comunity Edition和Python 2.7。

我的代码在carInput.py:

文件中如下所示
class carInput():

    def __init__(self):
       self.string = 'hi'       

我在控制台中输入以下内容:

>>> car = carInput.carInput()
>>> car
<carInput.carInput instance at 0x00000000027F3D08>
>>> car.string
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: carInput instance has no attribute 'string'

我想到在实例化 carInput 对象时,将始终执行 init 方法,并声明变量 string 。但是,当我尝试从控制台访问对象的字符串变量时,我被告知我的对象没有这样的属性。我误解了什么?

2 个答案:

答案 0 :(得分:1)

尝试将其更改为此选项并运行:

class carInput:
  def __init__(self):
    self.string = 'hi'

car = carInput()

print car.string

结果:

[x@localhost 36024276]$ python car.py 
hi

原因是如何定义类。我的文件名为car,因此您需要为您运行python carInput.py。

答案 1 :(得分:1)

由于您使用的是python 2.X,因此需要注意new-style and old-style类之间的区别。

class OldStyle:
  pass

class NewStyle(object):
  pass

原则上,您可以使用两种类型的类。但是,新的样式类应始终是首选!使用它们没有缺点,只有优点。高级代码通常会隐式地假设类是新式的!

在您的情况下,您实际上是在定义一个旧式的类。

class carInput(): # no object inside ()
    pass