在Python中,如何“指向”类中的外部对象?

时间:2013-12-30 18:03:02

标签: python class pointers

在Python中,我有一个

class OBJECT

已初始化。我现在正在创建一个需要使用此对象的方法的新类。如果我这样做:

class NEW_CLASS:
      def __init__(self, Object):
            self.Object = Object

NEW_CLASS(OBJECT)

self.Object是否像指针一样工作(借用术语,最初是C程序员),它指向OBJECT(我想要的结果)或self.Object在NEW_CLASS中创建一个单独的OBJECT?如果它不像指针一样,我该如何实现这个行为呢?

我的项目中会有一个OBJECT,但许多NEW_CLASS和NEW_CLASS需要访问OBJECT。我不想为每个NEW_CLASS创建一个新副本。

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

它确实表现为指针。因此,每次访问self.Object时,您都会访问最初传递给类Object的新实例的相同NEW_CLASS

答案 1 :(得分:0)

那么,您希望OBJECT成为全局对象吗?

如何(风格化遵循Python约定):

class GlobalObject:
    """Insert class definition here."""

OBJECT = GlobalObject()


class MyClass:
    def __init__(self, global_object=OBJECT):
        self._object = global_object

    def do_something():
        print "The object is: %s" % self._object

答案 2 :(得分:0)

毫无疑问,它与对象相同。它们都具有相同的id,即C / C ++中的内存位置。

>>> id(NEW_CLASS(OBJECT).Object) == id(OBJECT)
True

id(...)
    id(object) -> integer

    Return the identity of an object.  This is guaranteed to be unique among
    simultaneously existing objects.  (Hint: it's the object's memory address.)

一条建议,避免使用object(无论情况如何)作为变量名称。

help(object)
class object
 |  The most base type