这里有4种不同的变量存储方式。从易于阅读的角度来看,我试图查看哪种方式是最Python化的方式。
也许创建一个外部文件并将所有变量放在其中可能会有所帮助?我不太在乎人们是否能够将这些变量访问其他文件。变量将仅用于此类。
在方法内部定义变量。
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
答案 0 :(得分:1)
有两种方法可以让我看到最多的东西……它们是最Python化的吗?不能确定,因此我将保留真正的python忍者,而不对此大胆声明。
如果这些值是特定于猫的,则可以避免使用。
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
答案 1 :(得分:1)
如果仅在此文件中使用枚举,请将它们放在同一文件中。否则,将它们移至其他文件。