从单独的文件中创建类的对象

65

我已经完成了几个Python教程,知道如何定义类,但不知道如何使用它们。例如,我创建了以下文件(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

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


6
你意识到condition是一个类属性,被所有实例共享吗? - jonrsharpe
1
@jonrsharpe,为了使每个对象独立分开,我应该将其重命名为self.condition吗? - Trenera
2
是的,在__init__函数内部将其设置为self.condition = 'New' - jonrsharpe
3个回答

104
在你的 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分钟内)接受答案。 - Trenera
@ViharChervenkov,谢谢。很高兴能帮到你。 - sshashank124
1
如果它们不在同一个目录下怎么办?谢谢! - Jakob Ryden
当它们位于不同的目录中时,您可以参考此答案:https://dev59.com/oGYr5IYBdhLWcg3wi6o_#13599005 - Puneeth G R

1

只需在您的梅赛德斯文件中使用导入命令。 这里有一个关于Python导入的好介绍。


1

Mercedes.py:

from car import Car

这个代码从car.py文件中导入了Car类 要使用它:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接