python - 作为类属性的实例列表
问题描述
创建包含类的所有实例的类属性(列表)是一种好习惯吗?
它有我应该考虑的不良副作用吗?
class Car:
cars = []
def __init__(self, color):
self.color = color
__class__.cars.append(self)
def delete(self):
__class__.cars.remove(self)
@classmethod
def by_color(cls, color):
for car in cls.cars:
if car.color == color:
return car
def __repr__(self):
return str(self)
def __str__(self):
return '{} Car'.format(self.color)
car1 = Car('green')
car2 = Car('blue')
car3 = Car('red')
print(Car.cars) # [green Car, blue Car, red Car]
car3.delete()
print(Car.cars) # [green Car, blue Car]
解决方案
创建包含类的所有实例的类属性(列表)是一种好习惯吗?
不会。虽然这样的模式很有用,但认为它对大多数人来说是意料之外的。仅在有明显好处并严格记录时才使用它。
它有我应该考虑的不良副作用吗?
虽然不一定是坏事,但对课程的用户来说,各种副作用不会很明显。
推荐阅读
- swift - 用户已登录并使用 api 将数据保存到核心数据中
- python - 当我使用“currentIndex()”
- node.js - 使用Nodejs异步将值的总和写入另一个文件
- powershell - 运行 convertto-html 时在 powershell 中获取属性值
- barcode - Barcode/Magswipe Track 数据是否包含驾驶执照上的照片/图像信息?
- css - webpack没有为提取文本插件获取单独的css文件
- sql - 与 OR 语句组合并与 OR 语句结合的正确语法是什么
- php - php mysql寻找如何检查是否没有结果
- eigen3 - 返回包含 ArrayWrapper 的表达式
- node.js - 使用 HTTP Range 标头的 Node.js 脚本请求导致比请求的字节多。