Python 如何创建“单个”对象
我的任务其实很简单。也许我太习惯C++了,看不到我的错。 我有两门课和一张单子。 该列表应包括由class1构成的所有对象,而class1还包括class2的所有对象的列表。 因此,我们:Python 如何创建“单个”对象,python,object,Python,Object,我的任务其实很简单。也许我太习惯C++了,看不到我的错。 我有两门课和一张单子。 该列表应包括由class1构成的所有对象,而class1还包括class2的所有对象的列表。 因此,我们: All_Objects1 = [] # For class1 objects class class1 (object): All_Objects2 = [] # For class2 objects class class2 (object): name = "" nu
All_Objects1 = [] # For class1 objects
class class1 (object):
All_Objects2 = [] # For class2 objects
class class2 (object):
name = ""
number = 0
现在我这样做:
# class1 objects:
obj1= class1()
obj2= class1()
# class2 objects
obj3 = class2()
obj3.name, obj3.number = "hello world", 10
obj4 = class2()
obj4.name, obj3.number = "hello europe", 20
obj5 = class2()
obj5.name, obj3.number = "hello asia", 30
obj6 = class2()
obj6.name, obj3.number = "hello africa", 40
# Attach object3 and object4 to object1
obj1.All_Objects2.append(obj3)
obj1.All_Objects2.append(obj4)
# Attach object5 and object6 to object2
obj2.All_Objects2.append(obj5)
obj2.All_Objects2.append(obj6)
# Attach obj1 and obj2 to the global list.
All_Objects1.append(obj1)
All_Objects1.append(obj2)
最后,我做了一个打印检查是否所有东西都在它所属的地方:
print (len(All_Objects1[0].All_Objects2)) # Should be 2.
for i in All_Objects1[0].All_Objects2:
print (i.name) # Should be world and europe.
print (len(All_Objects1[1].All_Objects2)) # Should be 2.
for i in All_Objects1[1].All_Objects2: # Should be asia, africa.
print (i.name)
现在的问题是,每个object2都在每个object1中,我不知道为什么
在我的实际程序中,我做了这样的事情,在c++中实际工作的是什么
#pseudo
for i in all_information:
if (i==Keyword):
currentObject = class1()
All_objects.append(currentObject)
然后我的列表中会有一些独立的对象。但在Python中,我想我无法覆盖currentObject
非常感谢您的帮助。在Python中,有些东西可能会出错,首先,您使用的是哪个版本的Python 我还没有在我的控制台上进行测试,但我想这是一个初始化问题,对于如何声明列表,我更建议使用一种更具python风格的方法,我的意思是,构建一个构造函数,并使用关键字self作为实例变量,如果这可行,我可以扩展我的答案,解释为什么会发生这种情况 在类1和类2中创建类似的方法:
def __init__(self, object_list=None) : # use corresponding classes attributes.
if self.name_of_your_variable:
self.name_of_your_variable= [] # or proper value
根据您的类调整此选项,并让我知道,如果它有效,我一回到家就会用Python扩展它,有人可能会犯此错误,首先,您使用的是哪个版本的Python 我还没有在我的控制台上进行测试,但我想这是一个初始化问题,对于如何声明列表,我更建议使用一种更具python风格的方法,我的意思是,构建一个构造函数,并使用关键字self作为实例变量,如果这可行,我可以扩展我的答案,解释为什么会发生这种情况 在类1和类2中创建类似的方法:
def __init__(self, object_list=None) : # use corresponding classes attributes.
if self.name_of_your_variable:
self.name_of_your_variable= [] # or proper value
根据您的类调整它,并让我知道,如果它有效,我一回到家就用Python扩展它,在任何函数之外声明的所有类成员都是静态成员。因此,它们由类中实例化的每个对象共享 您需要的是以下内容:
class class1 (object):
def __init__(self):
self.All_Objects2 = [] # For class2 objects
class class2 (object):
def __init__(self):
self.name = ""
self.number = 0
对于Python,在任何函数之外声明的所有类成员都是静态成员。因此,它们由类中实例化的每个对象共享 您需要的是以下内容:
class class1 (object):
def __init__(self):
self.All_Objects2 = [] # For class2 objects
class class2 (object):
def __init__(self):
self.name = ""
self.number = 0
你只需要初始化你的类。init,您只需要一个“所有对象”列表。下面是一个关于类的示例
class firstA():
def __init__(self):
self.All_Objects = []
class secondB():
def __init__(self):
self.name ="None"
self.number = 0
当您调用该类时,将完成初始化:-这在python2/3中非常好
在类外初始化的任何内容都将被视为静态变量!因此,在您的示例中,所有对象列表就是一个例子
希望这能澄清你的疑问!祝你有愉快的一天。你只需要初始化你的类。init,您只需要一个“所有对象”列表。下面是一个关于类的示例
class firstA():
def __init__(self):
self.All_Objects = []
class secondB():
def __init__(self):
self.name ="None"
self.number = 0
当您调用该类时,将完成初始化:-这在python2/3中非常好
在类外初始化的任何内容都将被视为静态变量!因此,在您的示例中,所有对象列表就是一个例子
希望这能澄清你的疑问!祝你有愉快的一天。尝试向类中添加init函数;我认为python可能不知道如何为它创建新的内存块:即使是一个空/空的init just write pass,作为唯一的命令也应该执行这个技巧。为什么要使用类外的第一个列表?为什么不初始化类?为什么不使用继承?All_Objects2=[]在所有对象中创建共享元素。使用uuu init_uuu函数创建self.All_Objects2=[]尝试向类添加一个init函数;我认为python可能不知道如何为它创建新的内存块:即使是一个空/空的init just write pass,作为唯一的命令也应该执行这个技巧。为什么要使用类外的第一个列表?为什么不初始化类?为什么不使用继承?All_Objects2=[]在所有对象中创建共享元素。使用uuu init_uuu函数创建self.All_Objects2=[]Trotzdem Danke:-Trotzdem Danke:-