【问题标题】:Copying a class instance to another with python使用python将一个类实例复制到另一个
【发布时间】:2020-06-26 08:08:12
【问题描述】:

我有一个函数,它返回一个 Person 类的对象,定义为:

class Person:
    def __init__(self):
        self.id=None
        self.age=0
        self.name=None

    def setValues(self,id,age,name):
        self.id=id_
        self.age=age_
        self.name=name_

这是一个返回这样一个对象的函数:

def getTeacher():
    pr = Person()
    pr.setValues(11,"John",30)
    return pr

现在,我想将此函数返回的对象分配给 main 中的另一个对象:

teacher=getTeacher()

但事实证明,teacher 是一个空对象。 请帮忙

【问题讨论】:

  • getTeacher() 需要两个参数。你不带参数调用它。这一定导致了运行时错误。如果您没有错误,那么您显示的代码不是您执行的代码。请更新您的问题。
  • 某堂课中是否有老师?或者它只是一个功能。 getTeacher 接受两个输入(如果它是类方法,则为一个),但在您的代码中您没有传递任何输入。所以这会给出一个类型错误。请制作一个最小可运行代码示例
  • 好的,我已经改变了。问题仍然存在
  • 我测试了发布代码的当前版本,无法重现报告的结果。它在 setValues 中爆炸,因为 ``id_` 没有定义。

标签: python-3.x python-object


【解决方案1】:

您应该删除getTeacher函数中的参数,因为该函数不在Person类中,并且该函数中没有使用id。改正后就可以找老师了。

class Person:
    def __init__(self):
        self.id=None
        self.age=0
        self.name=None

    def setValues(self,id_,name_,age_):
        self.id=id_
        self.age=age_
        self.name=name_

def getTeacher():
    pr = Person()
    pr.setValues(11,"John",30)
    return pr

teacher=getTeacher()
print(teacher.id)

【讨论】:

  • 也删除self并将getTeacher()函数移出类。
  • 嗯。它按我的预期工作。使用teacher=getTeacher(),您将获得Person对象,请在末尾尝试print(teacher.age),看看您是否可以访问属性。
猜你喜欢
  • 1970-01-01
  • 2020-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
相关资源
最近更新 更多