具有大量参数的Python类

2024-06-16 11:51:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我的词汇培训师编写一个程序。 因此,我想为一个条目创建一个类

但是这个类会得到很多参数,目前大约15个。 那么,上课真的是正确的方法吗

class Voc_Entry:
def __init__(self, id_n, german, kanji_writing, kana_writing, word_type =  None, date_added = datatime.today(), kanji_write_progress = None, kanji_read_progress = None, kana_read_progress = None, kana_write_progress = None, kanji_write_last_date = None, kanji_read_last_date = None, kana_read_last_date = None, kana_write_last_date = None, kanji_write_next_date = None, kanji_read_next_date = None, kana_read_next_date = None, kana_write_next_date = None):
    self.id_n = id_n
    self.german = german
    self.kanji_writing = kanji_writing
    self.kana_writing = kana_writing
    self.word_type = word_type
    self.datetime = date_added
    .........

或者我应该在类中将其划分为函数,以获得所有之后的日期? 谢谢你的建议 Styx1337


Tags: selfnoneidreaddatetypewordwrite
1条回答
网友
1楼 · 发布于 2024-06-16 11:51:41

我的建议是找到将参数分组为逻辑单元的方法。看到更多的上下文将更容易提出具体的建议,但是kana...kanji...分组表明,也许应该有某种类来表示进度跟踪

from datetime import datetime
from typing import NamedTuple, Optional


class ProgressEntry(NamedTuple):
    read_progress: float
    write_progress: float
    read_last_date: datetime
    write_last_date: datetime
    read_next_date: datetime
    write_next_date: datetime


class VocabEntry:
    def __init__(
        self, 
        id_n, 
        german, 
        kanji_writing, 
        kana_writing, 
        word_type =  None, 
        date_added = datetime.today(), 
        kana_progress: Optional[ProgressEntry] = None,
        kanji_progress: Optional[ProgressEntry] = None, 
    ):
        self.id_n = id_n
        self.german = german
        self.kanji_writing = kanji_writing
        self.kana_writing = kana_writing
        self.word_type = word_type
        self.datetime = date_added
        ...

相关问题 更多 >