在python中,是否可以在类X本身的成员函数中创建类X的对象,并对对象引用进行操作
假设代码,在类成员函数内部创建对象,然后将其引用指定给全局变量,然后将原始引用指定给其他值在python中,是否可以在类X本身的成员函数中创建类X的对象,并对对象引用进行操作,python,class,oop,Python,Class,Oop,假设代码,在类成员函数内部创建对象,然后将其引用指定给全局变量,然后将原始引用指定给其他值 object_list = [] class X: def __init__(self): .... .... def my_method(): obj1 = X() obj2 = X() object_list = [obj1,obj2] obj1 = '' obj2 = ''
object_list = []
class X:
def __init__(self):
....
....
def my_method():
obj1 = X()
obj2 = X()
object_list = [obj1,obj2]
obj1 = ''
obj2 = ''
你是说像这样吗?在类本身中创建实例?这段代码在Python3.4中运行得很好,尽管我不知道这可能会导致未来的后果
class Animal(object):
def __init__(self, name, age):
self.name = name
self.age = age
def description(self):
print (self.name)
print (self.age)
def testt(self):
animo = Animal('johndoe', 5)
animo.description()
horse = Animal('trevor', 4)
horse.testt()
至少先试着运行它。因为
obj1
和obj2
是my_方法
的本地名称,所以在将对象放入object_列表
后如何处理它们并不重要;当my_method
返回时,它们超出了范围。我尝试了一些错误,与我的问题完全无关,TypeError:get_num()接受0个位置参数,但给出了1,事实上我在调用接受答案的方法中没有提供参数,我声明了一个全局变量a='',然后在类方法内部初始化a=Animal('johndoe',5),a.description()确实在成员函数外部执行是的,这就是我所寻找的,但是在类的成员函数内部创建的对象是否可以在类外部访问,我认为否,因为它是testt函数的本地成员,但是如果它的引用被分配给一个全局变量,那么它可以在类测试之外被访问吗?当一个全局变量被分配一个引用时,它确实起作用,但我想进一步了解的是,当父对象被垃圾收集器销毁时,子对象也会被销毁吗?Python中的对象既不是全局对象,也不是局部对象,只有引用它们的名称才是全局对象。同样,引用计数不区分本地引用和全局引用。只要您不尝试在\uuuu init\uuuu
中创建相同类型的对象(这将导致无限循环!),就没有理由不能创建相同类的对象。人们总是这样做,例如类向量:def\uu add\uu(self,other):返回向量(self.x+other.x,self.y+other.y)
。