week 6

作者: 猪蹄炖粥 | 来源:发表于2018-08-01 23:27 被阅读6次

    week6

    面向对象和面向过程

    面向对象:以数据对象为中心,将数据类型的特性及方法封装抽象为“一种类”;B类可以在A类的基础上进行“改造”,拥有A类的一些属性和方法,同时又有B类特有的属性和方法,这就是继承;一个对象实体有多种不同的实现形式,称之为多态,如果一个实体对象只能有一种实现方式,只能说它是基于对象的,而不是面向对象的。

    面向过程:以函数为中心,对数据集合进行处理,没有将某一特定的数据集合的方法和操作进行抽象封装,只对过程的重复性进行拆分。

    继承和封装

    import datetime
    
    class Person(object):
        def __init__(self, name):
            """self指针"""
            self.name = name
            self.birthday = None
            self.lastName = name.split(' ')[-1]
    
        def getLastName(self):
            return self.lastName
    
        def setBirthday(self,month,day,year):
            self.birthday = datetime.date(year,month,day)
    
        def getAge(self):
    
        def __lt__(self, other):
                return self.name < other.name
            return self.lastName < other.lastName
    
        def __str__(self):
            return self.name
    
    
    
    class MITPerson(Person):
        nextIdNum = 0 # next ID number to assign
    
        def __init__(self, name):
            Person.__init__(self, name) # 初始化Person
            # 私有属性
            self.idNum = MITPerson.nextIdNum
            MITPerson.nextIdNum += 1
    
        def getIdNum(self):
            return self.idNum
    
        # sorting MIT people uses their ID number, not name!
        def __lt__(self, other):
            return self.idNum < other.idNum
    
    
    class UG(MITPerson):
        def __init__(self, name, classYear):
            MITPerson.__init__(self, name)
            self.year = classYear
    
        def getClass(self):
            return self.year
    
    class Grad(MITPerson):
        pass
    
    def isStudent(obj):
        return isinstance(obj,UG) or isinstance(obj,Grad)
    
    
    
    

    生成器

    #用生成器生成斐波那契数列
    def genFib():
        fibn_1 = 1 #fib(n-1)
        fibn_2 = 0 #fib(n-2)
        while True:
            # fib(n) = fib(n-1) + fib(n-2)
            next = fibn_1 + fibn_2
            yield next
        fibn_2 = fibn_1
        fibn_1 = next
    

    视频错题总结

    An object's attributes must be defined in the object's __init__ method.

    False,在哪个方法都可以定义,只是习惯在__init__调用

    相关文章

      网友评论

          本文标题:week 6

          本文链接:https://www.haomeiwen.com/subject/zmpdvftx.html