20190831学习日志(G2汇总)

本文记录了从第十关到第十四关的学习过程,重点介绍了面向对象编程(OOP)的基本概念,包括类、实例、对象的定义及其特性,self参数的用法,以及类的继承和定制。同时,文中通过具体的Python代码示例,展示了如何实现类的创建、继承和方法的重写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2019-8-28
学习日志(第十关)

  1. 今天学习并且通关第十关,从内容到测试都做的比较顺利,学到了index的取值方式,应用很开脑洞,我只能用居然没想到来形容,用取值位移的方式调出数据判断胜负,这真是太让我惊叹了,电脑思维果然是开眼界啊.
  2. 知识盲点:
  • 第一个是def设置变量时候忘了食堂的菜单可以定义多参数,我自定义是一个一个输入输出;
  • 第二个是子函数和主函数之间的转换衔接还不是很顺利
  1. 复习下第9关的教学,温故而知新,这点非常重要,而且有助于建立起学习的信心,因为通关更容易了.
    • 熬夜都要通过第11关哦,I LOVE DEBUG.

2019-8-29
学习日志(第11关)

  1. 今天学习了debug四种常见错误,
  • 粗心(检查作业),知识应用不熟练(温故而知新),思路不清(逻辑关系没搞清),被动掉坑(软件测试方法).
  • 新扩展了两个点,一是随机取字符串的自定义函数,封装到内置函数有点困难,暂时没去研究;
  • 字典取值的一行代码需要去学习.Python 字典 items() 方法
  1. 关于字典取值的一行代码调用,请教了七七;try.except语句测试error,软件测试是不是也用这个?对于字典和列表取值有时候还会有点混淆,还得多翻阅.
  2. 帮助同学抓虫,帮助别人也加深自己的理解,debug比code更费精力哦.一是print函数内嵌套的括号检查(粗心);二是程序执行函数调用取值顺序问题,涉及到PY运行原理机制,深入后才更懂你哦;三是帮忙同学找软件包
    • 明天就计划通过12关卡啦.

2019-8-30
一种全新的编程思维:面向对象编程(Object Oriented Programming)

类:类之所以为类是因为每一个类之下都包含无数相似的不同个例.
实例:类的个例就叫做实例 (instance),可理解为“实际的例子”。
对象:Python中的对象等于类和实例的集合:即类可以看作是对象,实例也可以看作是对象,比如列表list是个类对象,[1,2]是个实例对象,它们都是对象。
Python里的每个类都有自己独特的属性(attribute)和方法(method),是这个类的所有实例都共享的。换言之,每个实例都可以调用类中所有的属性和方法。

特殊参数:self要点:
self会接收实例化过程中传入的数据,当实例对象创建后,实例便会代替 self,在代码中运行。

  • 第一点:只要在类中用def创建方法时,就必须把第一个参数位置留给 self,并在调用方法时忽略它(不用给self传参)。
  • 第二点:当在类的方法内部想调用类属性或其他方法时,就要采用self.属性名或self.方法名的格式。

特殊方法:初始化方法

  • 定义初始化方法的格式是def init(self),是由init加左右两边的【双】下划线组成( initialize “初始化”的缩写)。
  • 初始化方法的作用在于:当每个实例对象创建时,该方法内的代码无须调用就会自动运行。

学习日志(第12关)

  1. 今天学习了全新的编程思维,*面向对象编程.对象={类,实例}.*需要注意self参数的特性,可以传递和初始化输出
  2. 思维的改变不是一朝一夕的,习惯于’先做什么,后做什么’的思维,现在要变为**‘这是什么,能做什么’**
  3. 改变思维需要练习的加强,有时间可以把前面关卡的测试改变为对象编程.万事万物,皆为对象.
    • 明天通13关和14关,先抢个G3列车位,再复习G2关卡的知识点.

2019-8-31
类的基础知识(1.面向对象编程,2.类的创建和调用,3.创建类的两个关键点)。
拓展类的知识疆界,探索两个类的拓展玩法:类的定制和类的继承。

类能成为面向对象编程的主要工具,帮助 Python 在编程世界打下一片疆土,很大程度上是基于它的继承和定制。

函数isinstance(),可以用来判断某个实例是否属于某个类。
知识点:多层继承(垂直继承)和多重继承(水平继承+就近垂直继承)

学习日志(第13和14关):

  1. 把类与对象下部分章节学了,探索两个类的拓展玩法:类的定制和类的继承。
  • 继承:多层继承(垂直继承)和多重继承(水平继承+就近垂直继承)
  • 定制:新增代码重写代码

子类继承父类方法的操作是在def语句后接父类.方法(参数).在继承的基础上,通过参数的调整完成了定制。而参数的调整,可以增加参数(如 rate),也可以改变参数的默认值。

str(self)
只要在类中定义了__str__(self)方法,那么当使用print打印实例对象的时候,就会直接打印出在这个方法中return的数据。
2.

  • 容易混淆点:子类继承新增属性在def语句里面操作,参数调整要在下一行代码里面完成
  • self参数全能替身,代码多了就容易混淆,练习巩固
  1. 多看看13关和14关进阶练习代码写法,引用如下:
  2. 明天回顾G2知识点,塑造类的编程思维.
class Student:
    def __init__(self, name, job=None, time=0.00, time_effective=0.00): 
        self.name = name
        self.job = job
        self.time = time
        self.time_effective = time_effective

    def count_time(self, hour, rate):
        self.time += hour
        self.time_effective += hour * rate

class Programmer(Student):
    def __init__(self, name):#其他有默认赋值,所以可以不写
        Student.__init__(self, name, job='programmer', time=0.00, time_effective=0.00)#调整参数

    def count_time(self, hour, rate=1):#默认为1
        Student.count_time(self, hour, rate)#在这里可以改rate

student1 = Student('韩梅梅')
student2 = Programmer('李雷')
print(student1.job)
print(student2.job)
student1.count_time(10, 0.8)
student2.count_time(10)
print(student1.time_effective)
print(student2.time_effective)

 
    def __init__(self, name, author, comment, state = 0):
        self.name = name
        self.author = author
        self.comment = comment
        self.state = state
 
# 创建一个Book类的子类 FictonBook

class FictonBook(Book):
    def __init__(self, name, author, comment,  type = '虚构类'):#如果父类有赋值的参数如state可以不写,新增属性要这里添加
        Book.__init__(self, name, author, comment, state = 1,)#这里可以改变参数的取值
        self.type = type

    def __str__(self):
        status = '未借出'
        if self.state == 1:
            status = '已借出'
        return '类型:%s 名称:《%s》 作者:%s 推荐语:%s\n状态:%s ' % (self.type, self.name, self.author, self.comment, status)


book = FictonBook('囚鸟','冯内古特','我们都是受困于时代的囚鸟')
print(book)
class Book:
 
    def __init__(self, name, author, comment, state = 0):
        self.name = name
        self.author = author
        self.comment = comment
        self.state = state
 
    def __str__(self):
        status = '未借出'
        if self.state == 1:
            status = '已借出'
        return '名称:《%s》 作者:%s 推荐语:%s\n状态:%s ' % (self.name, self.author, self.comment, status)
 
class BookManager:

    authors = []
    def __init__(self):
        book1 = Book('撒哈拉的故事','三毛','我每想你一次,天上便落下一粒沙,从此便有了撒哈拉。')
        book2 = Book('梦里花落知多少','三毛','人人都曾拥有荷西,虽然他终会离去。')
        book3 = Book('月亮与六便士','毛姆','满地都是六便士,他却抬头看见了月亮。')
        self.books = [book1,book2,book3]
        self.authors.append(book1.author)
        self.authors.append(book2.author)
        self.authors.append(book3.author)
 
    def menu(self):
        while True:
            print('1.查询书籍')
            choice = int(input('请输入数字选择对应的功能:'))
            if choice == 1:
                self.show_author_book()
            else:
                print('感谢使用!')
                break
 
    def show_author_book(self):
        author = input('请输入想查询作家的名称:')
        if author in self.authors:
            print(author + '的作品有:')
            for book in self.books:
                if book.author == author:
                    print(book)
        else:
            print('很可惜,我们暂时没有收录这位作者的作品')

manager = BookManager()
manager.menu()            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值