Py学习  »  Python

存储类变量的最佳Pythonic方法

Anthony • 5 年前 • 1258 次点击  

这里有四种不同的存储变量的方法。我试着从一个容易阅读的角度来看,哪种方式是最具蟒蛇式的。


定义方法内部的变量。

class Cat(object):
    def __init__(self, color, breed, age):
        self.color = color
        self.breed = breed
        self.age = age

    def is_old_cat(self):
        OLD_AGE = 15

        if self.age > OLD_AGE:
            return True

        return False

    def is_young_cat(self):
        YOUNG_AGE = 5

        if self.age < YOUNG_AGE:
            return True

        return False

    def is_medium_young(self):
        LOW_MEDIUM_AGE = 8
        HIGH_MEDIUM_AGE = 12

        if LOW_MEDIUM_AGE < self.age < HIGH_MEDIUM_AGE:
            return True

        return False

在教室里。

class Cat(object):
    OLD_AGE = 15
    YOUNG_AGE = 5
    LOW_MEDIUM_AGE = 8
    HIGH_MEDIUM_AGE = 12

    def __init__(self, color, breed, age):
        self.color = color
        self.breed = breed
        self.age = age

    def is_old_cat(self):
        if self.age > self.AGES['OLD_AGE']:
            return True

        return False

    def is_young_cat(self):
        if self.age < self.AGES['YOUNG_AGE']:
            return True

        return False

    def is_medium_young(self):
        if self.AGES['LOW_MEDIUM_AGE'] < self.age < self.AGES['HIGH_MEDIUM_AGE']:
            return True

        return False

在教室外面。

OLD_AGE = 15
YOUNG_AGE = 5
LOW_MEDIUM_AGE = 8
HIGH_MEDIUM_AGE = 12


class Cat(object):
    def __init__(self, color, breed, age):
        self.color = color
        self.breed = breed
        self.age = age

    def is_old_cat(self):
        if self.age > AGES['OLD_AGE']:
            return True

        return False

    def is_young_cat(self):
        if self.age < AGES['YOUNG_AGE']:
            return True

        return False

    def is_medium_young(self):
        if AGES['LOW_MEDIUM_AGE'] < self.age < AGES['HIGH_MEDIUM_AGE']:
            return True

        return False

在另一个班里。

class Ages:
    OLD_AGE = 15
    YOUNG_AGE = 5
    LOW_MEDIUM_AGE = 8
    HIGH_MEDIUM_AGE = 12


class Cat(object):
    def __init__(self, color, breed, age):
        self.color = color
        self.breed = breed
        self.age = age

    def is_old_cat(self):
        if self.age > Ages.OLD_AGE:
            return True

        return False

    def is_young_cat(self):
        if self.age < Ages.YOUNG_AGE:
            return True

        return False

    def is_medium_young(self):
        if Ages.LOW_MEDIUM_AGE < self.age < Ages.HIGH_MEDIUM_AGE:
            return True

        return False
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53689
 
1258 次点击  
文章 [ 2 ]  |  最新文章 5 年前
algorythms
Reply   •   1 楼
algorythms    5 年前

Kevin Welch
Reply   •   2 楼
Kevin Welch    5 年前

我认为有两种方法可以做到这一点。。。他们是最蟒蛇吗?不确定,所以我将留给真正的PythonNinjas,而不做任何大胆的声明。

如果这些值是特定于猫的,那么您可以不必担心。

class Cat(object):
    OLD_AGE = 15
    YOUNG_AGE = 5
    LOW_MEDIUM_AGE = 8
    HIGH_MEDIUM_AGE = 12

    def __init__(self, color, breed, age):
        self.color = color
        self.breed = breed
        self.age = age

    def is_old_cat(self):
        if self.age > self.OLD_AGE:
            return True

        return False

另一种方法是创建一个枚举,您可以在 Cat

但是,如果您选择使用枚举,那么如果您有一个 Human 你想清楚的是15岁对猫来说是老的,而不是对人类。

from enum import IntEnum
class Age(IntEnum):
    OLD = 15
    YOUNG = 5
    LOW_MEDIUM = 8
    HIGH_MEDIUM = 12

print(Age.OLD) # 15
print(Age.YOUNG) # 5