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