BG Development


  Reply to this topicStart new topicStart Poll

> аргументи в конструкотр на Python, Python
unix7777
Публикувано на: 06-03-2018, 00:45
Quote Post



Име:
Група: Потребител
Ранг: Посетител

Мнения: 86
Регистриран на: 12.10.08



Опитвам се да предам променлива id в конструктора, но ми дава грешка:

CODE

class PartnersEdit(QDialog):
      row = Signal(int)
      
      def __init__(self, parent=None, id):
            super(PartnersEdit, self).__init__(parent, id)
               self.id = id


CODE

d = PartnersEdit(self,1)
d.show()


SyntaxError: non-default argument follows default argumen
PMEmail Poster
Top
bvbfan
Публикувано на: 06-03-2018, 07:15
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2786
Регистриран на: 08.12.13



То си пише, не може да правиш параметър, който има стойност по подразбиране преди такъв без.
CODE
class PartnersEdit(QDialog):
     row = Signal(int)
     
     def __init__(self, id, parent=None):
           super(PartnersEdit, self).__init__(parent, id)
              self.id = id
.
.
.
PartnersEdit(1, self)


--------------------
QUOTE (Bender @ 23-04-2015, 19:11)
Xamarin: ЛАПАЙ!
Ти: Добре...
PMEmail Poster
Top
cpuin
Публикувано на: 06-03-2018, 14:57
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 876
Регистриран на: 06.03.12



Благодаря


--------------------
"Трудните неща изискват време, невъзможните - просто малко повече"
PMEmail Poster
Top
unix7777
Публикувано на: 06-03-2018, 21:46
Quote Post



Име:
Група: Потребител
Ранг: Посетител

Мнения: 86
Регистриран на: 12.10.08



QUOTE (bvbfan @ 06-03-2018, 07:15)
То си пише, не може да правиш параметър, който има стойност по подразбиране преди такъв без.
CODE
class PartnersEdit(QDialog):
     row = Signal(int)
     
     def __init__(self, id, parent=None):
           super(PartnersEdit, self).__init__(parent, id)
              self.id = id
.
.
.
PartnersEdit(1, self)

TypeError: 'PySide2.QtWidgets.QDialog' called with wrong argument types:
PySide2.QtWidgets.QDialog(int, PartnersWidget)

това е резултата от кода, който си написал като отговор.
PMEmail Poster
Top
ici
Публикувано на: 06-03-2018, 22:11
Quote Post


Group Icon
Име: Ивайло Илчев ики
Група: VIP
Ранг: Почетен член

Мнения: 15400
Регистриран на: 06.06.04



CODE
super(PartnersEdit, self).__init__(self, parent)


трябва да стане
CODE
super().__init__(parent)


Това мнение е било редактирано от ici на 06-03-2018, 22:11


--------------------
Както и при християнската религия, така и при социализмът, най-лошата реклама за идеята са нейните последователи. - Джордж Оруел
PMEmail PosterUsers Website
Top
unix7777
  Публикувано на: 07-03-2018, 14:50
Quote Post



Име:
Група: Потребител
Ранг: Посетител

Мнения: 86
Регистриран на: 12.10.08



QUOTE (ici @ 06-03-2018, 22:11)
CODE
super(PartnersEdit, self).__init__(self, parent)


трябва да стане
CODE
super().__init__(parent)



CODE

d = PartnersEdit(rowid, self)


CODE

class PartnersEdit(QDialog):
      row = Signal(int)
      
      def __init__(self, id, parent=None):
            super().__init__(id,parent)
            
            self.id = id
......




File "main.py", line 253, in editPartner
d = PartnersEdit(rowid, self)
File "main.py", line 472, in __init__
super().__init__(id,parent)
TypeError: 'PySide2.QtWidgets.QDialog' called with wrong argument types:
PySide2.QtWidgets.QDialog(str, PartnersWidget)
Supported signatures:
PySide2.QtWidgets.QDialog(PySide2.QtWidgets.QWidget = Q_NULLPTR, PySide2.QtCore.Qt.WindowFlags = Qt.WindowFlags())
PMEmail Poster
Top
ici
Публикувано на: 07-03-2018, 16:45
Quote Post


Group Icon
Име: Ивайло Илчев ики
Група: VIP
Ранг: Почетен член

Мнения: 15400
Регистриран на: 06.06.04



Е т'ва ако ми кажеш от къде го измисли???

CODE
super().__init__(id,parent)


--------------------
Както и при християнската религия, така и при социализмът, най-лошата реклама за идеята са нейните последователи. - Джордж Оруел
PMEmail PosterUsers Website
Top
Lachezar
Публикувано на: 07-03-2018, 17:35
Quote Post



Име: Лъчезар Добрев
Група: Потребител
Ранг: Почетен член

Мнения: 2670
Регистриран на: 10.11.04



QUOTE (ici @ 07-03-2018, 16:45)
Е т'ва ако ми кажеш от къде го измисли???

CODE
super().__init__(id,parent)

Python 3 изглежда

Редакция: Уф, игнорирайте ме. Не съм разбрал въпроса. Помислих, че става дума за синтаксиса.

@unix7777: Конструктора на QDialog не приема такива параметри, това id трябва да си го запишеш, а super() конструктора трябва да извикаш с параметрите на QDialog. Моето предложение е:
CODE
class PartnersEdit(QDialog):
  def __init__(self, id, parent = None, flags = 0)
    super().__init__(parent, flags)
    self.id = id


Това мнение е било редактирано от Lachezar на 07-03-2018, 17:42


--------------------
И'м ватцхинг ъоу...
PMUsers Website
Top
dedal
Публикувано на: 23-05-2018, 15:18
Quote Post



Име: Григор Колев
Група: Потребител
Ранг: Посетител

Мнения: 83
Регистриран на: 17.11.10



QUOTE (Lachezar @ 07-03-2018, 17:35)
QUOTE (ici @ 07-03-2018, 16:45)
Е т'ва ако ми кажеш от къде го измисли???

CODE
super().__init__(id,parent)

Python 3 изглежда

Редакция: Уф, игнорирайте ме. Не съм разбрал въпроса. Помислих, че става дума за синтаксиса.

@unix7777: Конструктора на QDialog не приема такива параметри, това id трябва да си го запишеш, а super() конструктора трябва да извикаш с параметрите на QDialog. Моето предложение е:
CODE
class PartnersEdit(QDialog):
  def __init__(self, id, parent = None, flags = 0)
    super().__init__(parent, flags)
    self.id = id

Или нещо от сорта, аз рядко ползвам super

CODE

   QDialog.__init__(self, parent)
   self.id = id
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2018 | BG Development | All Rights Reserved
RSS 2.0