interweaving of objects DEMO

转载 2015年07月10日 08:50:24
#quote from MIT 'introduction to computation and programming using python, Revised'
import datetime

class Person(object):
    
    def __init__(self, name):
        """Create a person"""
        self.name = name
        try:
            lastBlank = name.rindex(' ')
            self.lastName = name[lastBlank+1:]
        except:
            self.lastName = name
        self.birthday = None
        
    def getName(self):
        """Returns self's full name"""
        return self.name
        
    def getLastName(self):
        """Returns self's last name"""
        return self.lastName
        
    def setBirthday(self, birthdate):
        """Assumes birthdate is of type datetime.date
           Sets self's birthday to birthdate"""
        self.birthday = birthdate
        
    def getAge(self):
        """Returns self's current age in days"""
        if self.birthday == None:
            raise ValueError
        return (datetime.date.today() - self.birthday).days
        
    def __lt__(self, other):
        """Returns True if self'name is lexicographically
           less than other's name, and False otherwise"""
        if self.lastName == other.lastName:
            return self.name < other.lastName
        return self.lastName < other.lastName
        
    def __str__(self):
        """Returns self's name"""
        return self.name
        
class MITPerson(Person):
    nextIdNum = 0 #identificaiton number
    
    def __init__(self, name):
        Person.__init__(self, name)
        self.idNum = MITPerson.nextIdNum
        MITPerson.nextIdNum += 1
        
    def getIdNum(self):
        return self.idNum
        
    def __lt__(self, other):
        return self.idNum < other.idNum
        
class Student(MITPerson):
    pass
    
class UG(Student):
    def __init__(self, name, classYear):
        MITPerson.__init__(self, name)
        self.year = classYear
    def getClass(self):
        return self.year
        
class Grad(Student):
    pass
    
    
class Grades(object):
    """A mapping from students to a list of grades"""
    def __init__(self):
        """Create empty grade book"""
        self.students = []
        self.grades = {}
        self.isSorted = True
        
    def addStudent(self, student):
        """Assumes: student is of type Student
           Add student to the grade book"""
        if student in self.students:
            raise ValueError('Duplicate student')
        self.students.append(student)
        self.grades[student.getIdNum()] = []
        self.isSorted = False
        
    def addGrade(self, student, grade):
        """Assumes: grade is a float
           Add grade to the list of grades for student"""
        try:
            self.grades[student.getIdNum()].append(grade)
        except:
            raise ValueError('Student not in mapping')
            
    def getGrades(self, student):
        """Return a list of grades for students"""
        try: #return copy of student's grades
            return self.grades[student.getIdNum()][:]
        except:
            raise ValueError('Student not in mapping')
            
    def getStudents(self):
        """Return a list of the students in the grade book"""
        if not self.isSorted:
            self.students.sort()
            self.isSorted = True
        return self.students[:] #return copy of list of students


%run "C:\Users\Administrator\test.py"


print p1
Eric Xing


print p2
Robert Miller

g = Grades()


g.addStudent(p1)


g.addGrade(p1, 100)


g.addGrade(p1, 90)


g.addGrade(p1, 97)


g.getGrades(p1)
Out[33]: [100, 90, 97]


g.addStudent(p2)


g.addGrade(p2, 80)


g.addGrade(p2, 88)


g.addGrade(p2, 82)


g.addGrade(p2, 86)


g.getGrades(p2)
Out[40]: [80, 88, 82, 86]


g.getStudents()
Out[41]: [<__main__.MITPerson at 0x6fd2d70>, <__main__.MITPerson at 0x6fd2ef0>]


for e in g.getStudents():
    print e
    
Eric Xing
Robert Miller


bug调试 使用Zombie Objects(僵尸对象)来解决关于内存泄露的问题

前段时间,做项目的时候 测试发现了一个bug 打过来重现的时候 发现就算打了全局断点,也没办法找到。。。无奈之下 就使用Xcode的Zombie Objects来查找定位。 当时报错:      ...
  • kevinSnip
  • kevinSnip
  • 2016年03月01日 10:38
  • 1936

[Guava源码分析](6)Objects分析

1. 私有构造器private Objects() {}2. 判断两个可能为null的对象是否相等public static boolean equal(@Nullable Object a, @Nu...
  • SunnyYoona
  • SunnyYoona
  • 2017年05月02日 12:09
  • 406

本地对象,内置对象,宿主对象

4.3.6native object object in an ECMAScript implementation whose semantics are fully defined by this ...
  • u010119868
  • u010119868
  • 2014年02月26日 17:20
  • 1195

R语言 出现的问题及解决

问题一: object(s) are masked from package - what does it mean?   Sometime when I attach a dataset,...
  • disappearedgod
  • disappearedgod
  • 2013年03月18日 10:05
  • 6703

黑马程序员-Java基础学习第九天笔记

------- android培训、java培训、期待与您交流! ---------- 4-1 初识JavaBean与内省 ·JavaBean是一种特殊的Java类,主要用于传递数据信息,...
  • u010665718
  • u010665718
  • 2015年09月18日 15:18
  • 512

GIT科普系列3:底层存储机制Internal Objects

题记:近期连续写了几篇关于git的博文,大多从日常使用过程中遇到的难点入手(例如冲突、回滚、放弃本地修改),目的是希望能够让大家从博文中找到可以直接用于实战的经验,因此并没有像其他指导手册一样事无巨细...
  • zssureqh
  • zssureqh
  • 2016年08月06日 16:21
  • 1943

使用Memory Analyzer tool(MAT)分析内存泄漏(三)

最近一段时间一直在研究热部署,热部署中涉及到一个比较头痛的问题就是查内存泄露(Memory Leak),于是乎在研究热部署的过程中,干的最多的一件事就是查内存泄露。        查内存泄露,最开始...
  • s464036801
  • s464036801
  • 2014年03月07日 15:27
  • 2144

Git背后的object

Git是一个版本库,它用来维护与管理项目的修订版本和历史信息。有时候我会觉得Git像是一个时光机,它能带我穿越时空回到过去,并且改写历史,但Git的功能又不仅仅如此,它可以让你在多个空间来回穿梭,甚至...
  • i_enum
  • i_enum
  • 2016年01月21日 20:05
  • 1690

git 详细教程,从头开始,看简单英文比中文好懂

Beginner   PLEASE NOTE, Section I and II below, are not to be followed in order, they are 2 se...
  • hepeng597
  • hepeng597
  • 2014年07月11日 14:53
  • 10700

关于object...objects作为参数列表中的参数的测试

--------------------- 题记 关于参数列表为Object...objects这样的万金油参数列表的测试。 --------------------- 代码 package obje...
  • u011483012
  • u011483012
  • 2013年11月25日 14:12
  • 819
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:interweaving of objects DEMO
举报原因:
原因补充:

(最多只允许输入30个字)