Отправить список переменных одного класса в другой класс в Python - PullRequest
0 голосов
/ 28 сентября 2018

Здесь я хочу отправить свойства объекта одного класса в другую базовую программу class.my, как здесь

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 not tuple

return должен быть 1 значением, не кратным

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

метод __init__() всегда должен возвращать None.Вы не можете заставить его вернуть что-нибудь еще.Вместо этого вы можете вставить свой кортеж в переменную экземпляра, а затем получить его либо с помощью метода getter для вашего экземпляра, либо (менее питонически) напрямую.Вы также используете 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")

Также обратите внимание, что ваш кортеж на самом деле не нужен, так как вы уже присвоили имя и возраств качестве атрибутов в вашем классе А.Вы можете просто вызвать их из 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")
0 голосов
/ 28 сентября 2018

поэтому, когда я отвечу на этот вопрос, я думаю, что должен дать вам несколько советов.

1 keywords ключевые слова 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 、, когда вы хотитечтобы получить свойства, вы должны определить метод в своем коде .the 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 с большим количеством примеров введите описание ссылки здесь

0 голосов
/ 28 сентября 2018
  1. Кортеж должен быть tuple((self.name,self.age)) вместо tuple(self.name,self.age), потому что tuple() получает только 1 аргумент вместо 2. (Я не уверен в этом на python3)
  2. __init__() долженверните None вместо кортежа, так как он создаст объект, попытайтесь выяснить это.
  3. в результате oldInfo будет "одним" объектом, и вы попытались распаковать его в 2, name ивозраст, поэтому вы получили ошибку "over un unpack".
...