week 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__调用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容