【问题标题】:Send list of variables one class to other class in python在python中将一个类的变量列表发送到另一个类
【发布时间】:2018-09-28 01:56:56
【问题描述】:

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

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 个值而不是多个值

【问题讨论】:

  • 感谢 loocid iam 从移动端发帖询问为什么会发生
  • 能否请您修正所有变量和关键字的大小写?

标签: python-3.x python-2.7 list valuetuple


【解决方案1】:
  1. 元组应该是tuple((self.name,self.age))而不是tuple(self.name,self.age),因为tuple()只接收1个参数而不是2个。(我在python3上不确定)
  2. __init__() 应该返回 None 而不是一个元组,因为它会创建一个对象,试着弄清楚。
  3. 因此,oldInfo 是“一个”对象,而您尝试将其解压缩为 2,姓名和年龄,因此出现“过度解压缩”错误。

【讨论】:

    【解决方案2】:

    __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 类中指定了姓名和年龄作为属性。您可以从 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")
    

    【讨论】:

      【解决方案3】:

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

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

      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 中通过更多示例了解更多信息enter link description here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        相关资源
        最近更新 更多