【问题标题】:Create object from class in separate file从单独文件中的类创建对象
【发布时间】:2014-06-07 22:26:43
【问题描述】:

我已经完成了几个关于 Python 的教程,并且我知道如何定义类,但我不知道如何使用它们。例如,我创建了以下 file (car.py):

class Car(object):
    condition = 'New'
    def __init__(self,brand,model,color):
        self.brand = brand
        self.model = model
        self.color = color

    def drive(self):
        self.condition = 'Used'

然后我创建另一个文件 (Mercedes.py),我想从 Car 类中创建一个对象 Mercedes:

Mercedes = Car('Mercedes', 'S Class', 'Red')

,但我得到一个错误:

NameError: name 'Car' is not defined

如果我在创建实例(汽车)的同一文件中创建实例(对象),则没有问题:

class Car(object):
    condition = 'New'
    def __init__(self,brand,model,color):
        self.brand = brand
        self.model = model
        self.color = color

    def drive(self):
        self.condition = 'Used'

Mercedes = Car('Mercedes', 'S Class', 'Red')

print (Mercedes.color)

哪些打印:

Red

所以问题是:如何从同一个包(文件夹)中不同文件的类创建对象?

【问题讨论】:

  • 你知道condition是一个类属性,被所有实例共享吗?
  • @jonrsharpe,为了每个对象分开,我应该把它重命名为self.condition?
  • 是的,设置为self.condition = 'New' inside __init__。

标签: python class object package


【解决方案1】:

在你的Mercedes.py中,你应该导入car.py文件如下(只要两个文件在同一目录):

import car

那么你可以这样做:

Mercedes = car.Car('Mercedes', 'S Class', 'Red')  #note the necessary 'car.'

或者,你可以这样做

from car import Car

Mercedes = Car('Mercedes', 'S Class', 'Red')      #no need of 'car.' anymore

【讨论】:

  • 谢谢,我会在允许后(10 分钟内)接受答案
  • @ViharChervenkov,谢谢。很高兴我能帮上忙。
  • 如果它们不在在同一个目录下怎么办?谢谢!
  • 当它们在不同的目录时,你可以参考这个答案:stackoverflow.com/questions/13598958/…
【解决方案2】:

只需在您的 Mercedes 文件中使用导入命令即可。 在here 中有一个很好的关于在 Python 中导入的介绍

【讨论】:

    【解决方案3】:

    梅赛德斯.py:

    from car import Car
    

    这会从 car.py 导入 Car 类 要使用它:

    Mercedes=Car('Mercedes', 'S Class', 'Red')
    

    【讨论】:

      猜你喜欢
      • 2015-11-17
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 2017-12-04
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      相关资源
      最近更新 更多