1
我想添加一个对象到一个具有函数的类。 这是我试过的,但输出结果并不是我所期望的。如何编写将对象添加到类的函数?
import gc
class People:
def __init__(self, name):
self.name = name
example = People('example')
def adding():
firstName = input('First name:')
lastName = input('LastName:')
fullName = firstName + " " + lastName
fullName = People(fullName)
addMore = input('Add another one?')
if addMore != 'no':
adding()
for obj in gc.get_objects():
if isinstance(obj, People):
print(obj.name)
adding()
print(10*'=')
for obj in gc.get_objects():
if isinstance(obj, People):
print(obj.name)
所以我试过的是创建一个简单的类并创建一个添加函数。 我也有一些代码是打印我班上的所有对象。该代码被执行两次:一次在加入函数的末尾,一次在所有代码的末尾。我在两者之间打印了一条线来区分它们。
我执行的代码和所使用的加法功能添加5名:亚历艾伯茨,布莱恩承担,卡西康纳,唐娜Dawson和埃玛爱德华兹。这是结果:
example
Alex Alberts
Brian Borne
Casey Connor
Donna Dawson
Emma Edwards
example
Alex Alberts
Brian Borne
Casey Connor
Donna Dawson
example
Alex Alberts
Brian Borne
Casey Connor
example
Alex Alberts
Brian Borne
example
Alex Alberts
==========
example
我不知道为何物似乎消失,为什么添加打印功能与该模式的名称。我期望的,我希望代码打印示例对象和我只输入一次的所有名称。我想在最后添加功能和代码来打印相同的对象名称。
我很抱歉,如果我没有解释这一切清楚。
你的'adds()'函数有一个递归。这解释了意想不到的模式。所以,当你执行'添加'('Alex Alberts')'时,你可以调用'添加'('Brian Borne')'等等。一旦所有输入完成,所有叠加起来的'get_objects()'循环属于最后一个'adds()'调用,通过第一个'adding()'调用一个接一个执行。该堆叠正在导致该模式。所以,在这种情况下,你必须避免递归。 – nikpod
以上评论是正确的。除了由可疑递归循环引起的问题之外,以这种方式使用'gc'并不是一个好主意 - 有更好更脆弱的方法。 –