1

在这里,我想将一个类对象属性发送到其他类。我的基本程序如下所示

class A():
    def __init__(self,name,age):
           Self.name = name
           Self .age = age
            Return tuple(self.name,self.age)
Class B():
       def __init__(self,oldInfo,job):
            Self.oldInfo=oldInfo
            Self.job=job
            Name,age= oldInfo
            Print(Name,age,job)
#calling block
Obj1=A("Scott","28")
Obj2=B(Obj1,"devolper") 

所以发生了一些错误,比如

过度解包

应该返回 None 不是元组

return 应该是 1 个值而不是多个

4

3 回答 3

1
  1. 元组应该tuple((self.name,self.age))代替tuple(self.name,self.age),因为tuple()只接收 1 个参数而不是 2。(我不确定这在 python3 上)
  2. __init__()应该返回 None 而不是元组,因为它会创建一个对象,试着弄清楚。
  3. 结果,oldInfo是“一个”对象,并且您尝试将其解压缩为 2,名称和年龄,因此您收到“过度解包”错误。
于 2018-09-28T02:13:34.927 回答
1

__init__()方法必须始终返回 None。你不能让它返回任何其他东西。您可以将元组粘贴在实例变量中,然后在您的实例上使用 getter 方法或(较少使用 Python)直接获取它。你也用tuple()错了。tuple()将单个参数作为元组或列表,而不是两个单独的参数。调用tuple()也不一定是因为你可以简单地创建一个新的元组foo = ('something', 'something else')

class A():
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.tuple = (self.name, self.age)

class B():
    def __init__(self, oldInfo, job):
        self.oldInfo = oldInfo
        self.job = job
        name, age = oldInfo.tuple
        print(name, age, job)

obj1 = A("Scott", "28")
obj2 = B(obj1, "developer")

另请注意,您的元组并不是真正需要的,因为您已经在 A 类中指定了 name 和 age 作为属性。您可以从 B 调用它们,因为 B 已经引用了整个对象:

class A():
    def __init__(self, name, age):
        self.name = name
        self.age = age

class B():
    def __init__(self, oldInfo, job):
        self.oldInfo = oldInfo
        self.job = job
        print(oldInfo.name, oldInfo.age, job)

obj1 = A("Scott", "28")
obj2 = B(obj1, "developer")
于 2018-09-28T02:14:32.350 回答
0

所以当我回答这个问题时,我想我应该给你一些建议。

1、python关键字首字母小写, def不是Def.others也是。您可以查看我的代码或在空闲时使用此代码。

import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 
'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 
'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 
'while', 'with', 'yield']

2、另一个是你应该在你的代码中使用带有缩进的四个空格。

3、要获取属性时,需要在代码中定义方法Obj1=A("Scott","28"),Obj1只是一个A类的对象,可以使用对象来获取你的属性与方法。

我的代码:

class A():

    def __init__(self,name,age):
        self.name = name
        self .age = age

    def gettuple(self):
        return tuple([self.name,self.age])
class B():

    def __init__(self,oldInfo,job):

        self.oldInfo = oldInfo
        self.job = job
        (Name,age) = oldInfo
        print(Name,age,job)


#calling block
devolper = 'goggo'
Obj1=A("Scott","28")
Obj2=B(Obj1.gettuple(),devolper) 

上次,我认为您应该在 python.org 中通过更多示例了解更多信息,在此处输入链接描述

于 2018-09-28T02:22:01.763 回答