我如何在Python中设计一个类?

问题:

我以前的问题for detecting pawstoes within a paw已经有一些非常棒的帮助,但是所有这些解决方案一次只能进行一次测量。
 Now I have data包含:

  • 约30只狗;
  • 每个都有24个测量(分为几个子组);
  • 每个测量具有至少4个触点(每个爪子一个)和

     

    • each contact is divided into 5 parts and
    • has several parameters, like contact time, location, total force etc.

 alt text
显然,把所有东西都粘在一个大的对象中是不会削减的,所以我想我需要使用类而不是当前的功能。但是即使我已经阅读了Python的Python课程,我也没有将它应用到我自己的代码(GitHub link
我也觉得处理所有的数据every时间我想要得到一些信息是很奇怪的。一旦我知道每个爪子的位置,我没有理由再次计算。此外,我想比较同一只狗的所有爪子,以确定哪个联系人属于哪个爪子(前/后,左/右)。如果继续使用功能,这将变得混乱。
所以现在我正在寻找如何创建类,让我以一种明智的方式处理我的数据(link to the zipped data of one dog)的建议。

回答:

如何设计一个班。

  1. 写下这些话。你开始这样做了有些人不知道为什么他们有问题。
  2. 将您的单词扩展成关于这些对象将要做什么的简单语句。也就是说,记下你将对这些事情做的各种计算。每个联系人的30条狗,24个测量,4个联系人和几个“参数”的简短列表是有趣的,但只是故事的一部分。您的“每个爪子的位置”和“比较同一只狗的所有爪子以确定哪个联系人属于哪个爪子”是对象设计的下一步。
  3. 强调名词认真。有些人辩论这个的价值,但我发现对于首次使用OO开发者来说,它是有帮助的。强调名词
  4. 查看名词需要使用“参数”和“测量”等通用名词替换具体的具体名词,这些名词适用于您的问题域中的问题。细节有助于澄清问题。泛型只是清除细节。
  5. 对于每个名词(“联系人”,“爪子”,“狗”等),记下该名词的属性和该对象所涉及的动作。不要短切。每个属性。 “数据集包含30只狗”的例子很重要。
  6. 对于每个属性,确定这是否是与定义的名词的关系,还是其他类型的“原始”或“原子”数据,如字符串或浮点数或不可约束的东西。
  7. 对于每个行为或操作,您必须确定哪个名词有责任,哪些名词只能参与。这是一个“可变性”的问题。一些对象得到更新,其他对象不会更新。可变对象必须对其突变承担全部责任。
  8. 此时,您可以开始将名词转换为类定义。一些集体名词是列表,词典,元组,集合或命名元组,你不需要做很多工作。其他类更复杂,无论是由于复杂的派生数据还是由于执行了一些更新/突变。

不要忘记使用unittest隔离测试每个类。
而且,没有任何法律规定班级必须是可变的。在你的情况下,例如,几乎没有可变数据。您所拥有的是派生数据,由源数据集中的转换函数创建。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How do I design a class in Python?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

85 − = 75