我的Python类感觉非常过分。有没有较短的方法可以做到这一点?

2024-05-15 20:40:52 发布

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

我似乎找不到研究这个的方法

我有一个尺码类,它将各种尺码的选择分为常见的类别(小、中、大等)。结果,我得到了我定义的这个长得可笑的大小枚举。当它工作的时候,我还在想是否有一个更聪明的方法我可以执行这个

文本选择真的是最好的方式吗

class Size(models.TextChoices):
        xs = "xs"
        x_small = "x-small"
        xsmall = "xsmall"
        s00 = "00"
        s0 = "0"
        s1 = "1"
        s2 = "2"
        w23 = "w23"
        w24 = "w24"
        s = "s"
        sm = "sm"
        small = "small"
        s3 = "3"
        s4 = "4"
        s5 = "5"
        s6 = "6"
        w25 = "w25"
        w26 = "w26"
        m = "m"
        md = "md"
        med = "med"
        medium = "medium"
        s7 = "7"
        s8 = "8"
        s9 = "9"
        s10 = "10"
        w27 = "w27"
        w28 = "w28"
        l = "l"
        lg = "lg"
        large = "large"
        s11 = "11"
        s12 = "12"
        s13 = "13"
        s14 = "14"
        w29 = "w29"
        w30 = "w30"
        s1x = "1X"
        s1x = "1XL"
        xl = "xl"
        x_large = "x-large"
        xlarge = "xlarge"
        s15 = "15"
        s16 = "16"
        s17 = "17"
        s18 = "18"
        w31 = "w31"
        w32 = "w32"
        s2x = "2X"
        s2x = "2XL"
        xxl = "xxl"
        xx_large = "xx-large"
        xxlarge = "xxlarge"
        s19 = "19"
        s20 = "20"
        s21 = "21"
        s22 = "22"
        w33 = "w33"
        w34 = "w34"
        s3x = "3X"
        s3x = "3XL"
        xxxl = "xxxl"
        s23 = "23"
        s24 = "24"
        s25 = "25"
        s26 = "26"
        w35 = "w35"
        w36 = "w36"
        s4x = "4X"
        s4x = "4XL"
        s27 = "27"
        s28 = "28"
        s29 = "29"
        s30 = "30"
        w37 = "w37"
        w38 = "w38"
        s5x = "5X"
        s5x = "5XL"
        s31 = "31"
        w39 = "w39"
        w40 = "w40"
        sos = "one-size"

    size = models.CharField(
        max_length=11,
        choices=Size.choices,
        default=Size.s00,
    )

    def is_one_size(self):
        return self.size == self.Size.os

    def is_xs(self):
        return self.size in {
            self.Size.s00,
            self.Size.s0,
            self.Size.s1,
            self.Size.w23,
            self.Size.w24,
            self.Size.xs,
            self.Size.xsmall,
            self.Size.x_small,
        }

    def is_sm(self):
        return self.size in {
            self.Size.s2,
            self.Size.s3,
            self.Size.s4,
            self.Size.s5,
            self.Size.w25,
            self.Size.w26,
            self.Size.w27,
            self.Size.w28,
            self.Size.s,
            self.Size.sm,
            self.Size.small,
        }

    def is_md(self):
        return self.size in {
            self.Size.s6,
            self.Size.s7,
            self.Size.s8,
            self.Size.s9,
            self.Size.w29,
            self.Size.w30,
            self.Size.w31,
            self.Size.w32
        }

    def is_lg(self):
        return self.size in {
            self.Size.s10,
            self.Size.s11,
            self.Size.s12,
            self.Size.s13,
        }

    def is_xl(self):
        return self.size in {
            self.Size.s14,
            self.Size.s15,
            self.Size.s16,
            self.Size.s17,
            self.Size.w33,
            self.Size.w34,
            self.Size.w35,
            self.Size.w36
        }

    def is_2x(self):
        return self.size in {
            self.Size.s18,
            self.Size.s19,
            self.Size.s20,
            self.Size.s21,
            self.Size.w37,
            self.Size.w38,
            self.Size.w39,
            self.Size.w40
        }

    def is_3x(self):
        return self.size in {
            self.Size.s22,
            self.Size.s23,
            self.Size.s24,
            self.Size.s25,
        }

    def is_4x(self):
        return self.size in {
            self.Size.s26,
            self.Size.s27,
            self.Size.s28,
            self.Size.s29,
        }

    def is_5x(self):
        return self.size in {
            self.Size.s30,
            self.Size.s31,
        }

Tags: inselfsizereturnisdefsmallsm