在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创建一个新副本。
感谢您的帮助!
答案 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