2024-09-30 05:22:38 发布
网友
class CIFAR10Record(object): pass result = CIFAR10Record() result.height = 32 result.width = 32 result.depth = 3
这段代码创建了一个类及其实例。
这种模式的优点和缺点是什么?
这段代码使用一个类来“聚集”许多相关字段。在
优点是它非常灵活。定义的类没有任何成员。任何函数都可以决定添加哪些字段。不同的调用可以创建这个类的对象,并以不同的方式填充它们(因此,可以同时拥有具有不同成员的同一类对象)。在
这种灵活性也是一种弊病。这缺乏结构:更难查看代码并决定类将拥有哪些成员。获取这样一个对象并迭代成员也不那么简单。最后,这个类是no encapsulation的极端情况。在
总之,我认为还有更好的选择:
如果确实需要这种灵活性(这本身就是一个问题),您可能需要考虑使用dict。在
dict
result = {} result['height'] = 32 result['width'] = 32 result['depth'] = 3
这里(IMHO)更清楚的是,结果只是一组字段,使用^{}'s methods在字段上迭代更容易。在
如果不需要这种灵活性,并且它只是最小化代码量的一种方法,那么您应该考虑使用^{}。在
这段代码使用一个类来“聚集”许多相关字段。在
优点是它非常灵活。定义的类没有任何成员。任何函数都可以决定添加哪些字段。不同的调用可以创建这个类的对象,并以不同的方式填充它们(因此,可以同时拥有具有不同成员的同一类对象)。在
这种灵活性也是一种弊病。这缺乏结构:更难查看代码并决定类将拥有哪些成员。获取这样一个对象并迭代成员也不那么简单。最后,这个类是no encapsulation的极端情况。在
总之,我认为还有更好的选择:
如果确实需要这种灵活性(这本身就是一个问题),您可能需要考虑使用
dict
。在这里(IMHO)更清楚的是,结果只是一组字段,使用^{}'s methods 在字段上迭代更容易。在
如果不需要这种灵活性,并且它只是最小化代码量的一种方法,那么您应该考虑使用^{} 。在
^{pr2}$相关问题 更多 >
编程相关推荐