2011-06-12 39 views
3

有一个模块car.py初始化名称空间模块中的类

有发动机和轮胎,我想他们(他们的方法和属性)可访问的

car.engine.data 
# and 
car.tires.data 

所以文件parts.py看起来

class engineClass(object): 
    def __init__(self): 
     self.data = 'foo data 1' 

class tiresClass(object): 
    def __init__(self): 
     self.data = 'foo data 2' 

engine = engineClass() 
tires = tiresClass() 

现在import car后我可以访问他们,因为我想 - car.engine.data

这是一个正确的事情做这项工作?

+1

...而那会是什么任务? – 2011-06-12 04:18:38

+1

你使用这些类是为了什么?用于分隔'type1'和'type2'的 – Blender 2011-06-12 04:19:39

+0

。它们不同,但足够接近一个模块。 – Qiao 2011-06-12 04:21:52

回答

3

当然......我不太清楚你问什么...

这没有什么错,你在做什么,但你可以跳过初始化的情况下类,您已经证明。只要做到:

class type1(object): 
    data = 'foo 1' 

class type2(object): 
    data = 'foo 2' 

无论是有道理的,你在做什么,我不知道的情况下...

对于这个问题,你可以只是做

class Container(object): 
    pass 

type1, type2 = Container(), Container() 
type1.data = 'foo 1' 
type2.data = 'foo 2' 

或其他任何类似的东西......什么是type1type2分别代表什么?

+0

是的,那是我正在寻找的答案。我以为你应该总是初始化实例。 – Qiao 2011-06-12 04:26:14

+1

如果你需要一个实例 - 创建它。但是你也可以使用这个类,它是一个对象(实例)本身。在上面的例子中,data是类的静态变量(类属性) – warvariuc 2011-06-12 16:15:57