LINUX.ORG.RU

python3 сгенерить методы можно ли?

 


0

1

Привет, всем! А ведь наверняка можно в Питоне сгенерить методы.

Ну, например, ниже __init__ и __repr__ набивать руками очень неблагодарное дело.

Подскажите, как генернуть __init__ и __repr__???

class MyTable(Base):
    
    id = Column(Integer, primary_key=True)
    field1 = Column(String, nullable=False)
    field2 = Column(String, nullable=False)
    # ...
    fieldN = Column(String, nullable=False)    


    def __init__(self, field1, ... fieldN):

        self.field1 = field1
        #
        self.fieldN = fieldN


    def __repr__(self):

        return "<MyTable({} ... {})>".format(field1, ... fieldN)

Ответ на: комментарий от Crocodoom

А без dataclasses незя? Питон 3.9 пока не получиться заюзать - доступен только 3.6.9 на серваке. Ну и не понятно как dataclasses дружить с sqlalchemy.

scientistpython
() автор топика

Написать свой препроцессор ( на Python? ) чтобы

@myinit def __init__(self, field1, ... fieldN):

разворачивал в то, что нужно?

anymouse
()

Да хоть классы. Но ты просишь

def __init__(self, **kwa):
    self.__dict__.update(kwa)
def __repr__(self):
    return f"<MyTable(' '.join([getattr(self, attrname) for attrname in dir(self) if attrname.startswith('field')])>"

Еще б знать, че ты хочешь.

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.