关闭

inheritance & class variable DEMO

145人阅读 评论(0) 收藏 举报
分类:
#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


%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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:83969次
    • 积分:2832
    • 等级:
    • 排名:第12604名
    • 原创:165篇
    • 转载:108篇
    • 译文:30篇
    • 评论:1条
    文章分类
    最新评论