inheritance & class variable DEMO

来源:互联网 发布:淘宝网店创业计划书 编辑:程序博客网 时间:2024/05/01 02:47
#quote from MIT 'introduction to computation and programming using python, Revised'import datetimeclass 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


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


p1 = MITPerson('Eric Xing')


p1.getName()
Out[3]: 'Eric Xing'


p1.getLastName()
Out[4]: 'Xing'


p1.setBirthday(datetime.date(1970,9,12))


p1.getAge()
Out[6]: 16372


print p1
Eric Xing


p2 = MITPerson('Robert Miller')


p2.getName()
Out[9]: 'Robert Miller'


p2.getLastName()
Out[10]: 'Miller'


p2.setBirthday(datetime.date(1990,6, 23))


p2.getAge()
Out[12]: 9148


p1.getIdNum()
Out[13]: 0


p2.getIdNum()
Out[14]: 1


p1 < p2
Out[15]: True


p1 > p2
Out[16]: False


L = [p2, p1]


L.sort()

for e in L:
    print e.getName(), e.getIdNum()
    
Eric Xing 0
Robert Miller 1

0 0
原创粉丝点击