《笨办法学Python》 第45课手记
时间:2022-04-26
本文章向大家介绍《笨办法学Python》 第45课手记,主要内容包括《笨办法学Python》 第45课手记、本节课涉及的知识、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
《笨办法学Python》 第45课手记
本节课将对象和类以及他们之间的从属关系。
本学期刚开始学数据结构,贴一些相关的概念:
从整个计算机科学的角度来说,对象是对客观事物的抽象,类是对对象的抽象。类和对象都是一种抽象的数据类型。
对象:是指在应用问题中出现的各种实体、事件和规格说明等,它是由一组属性和在这组值上的一组服务(这里的服务指的是操作,就是我们写在类里的函数所提供的功能,本文作者注)构成的,其中属性值确定了对象的状态。
类:把具有相同属性和服务的对象归到同一类,而把一个类中的的每一个对象称为该类的一个实例,他们具有相同的服务。
继承:面向对象方法最有特色的方面。
继承性(Inheritance)是指,在某种情况下,一个类会有“子类”。子类比原本的类(称为父类)要更加具体化。(该段不是书中内容,为作者添加)
原代码如下:
## Animal is-a object(yes, sort of confusing)look at the extra credit
class Animal(Object):
pass
## Dog is-a class
class Dog(Animal):
def __init__(self,name)
##Dog has-a object
self.name = name
## Cat is-a class
class Cat(Animal):
def __init__(self,name):
## Cat has-a object
self.name = name
## Person is-a class
class Person(object):
def __init__(self,name)
## Person has-a object
self.name = name
## Person has-a pet of some kind
self.pet = None
## Employee is-a class
class Employee(Person):
def __init__(self, name, salary)
## Employee inherit Person hmm what is this strange magic?
super(Employee, self).__init__(name)
## person has-a salary
self.salary = salary
## Fish is-a object
class Fish(object):
pass
## Salmon is-a class
class Salmon(Fish)
pass
## Halibut is-a class
class Halibut(Fish)
pass
## rover is-a Dog
rover = Dog("Rover")
## satan is-a Cat
satan = Cat("Satan")
## mary is-a Person
mary = Person("Mary")
## mary has-a pet
mary.pet = satan
## frank is-a Employee
frank = Employee("Frank", 120000)
## frank has-a pet
frank.pet = rover
## flipper is-a Fish
flipper = Fish()
## crouse is-a Salmon
crouse = Salmon()
## harry is a Halibut
harry = Halibut()
通过这段代码,我们得记住,类既可以在对象上定义,也可以在其他类上定义(体现继承性)。
本节课涉及的知识
super(Employee, self).__init__(name)
super函数是在Python2.2后被添加的函数,用来实现类的继承。
super(type[, object-or-type])
Return the superclass of type. If the second argument is omitted the super object
returned is unbound. If the second argument is an object, isinstance(obj, type)
must be true. If the second argument is a type, issubclass(type2, type) must be
true. super() only works for new-style classes.
A typical use for calling a cooperative superclass method is:
class C(B):
def meth(self, arg):
super(C, self).meth(arg)
New in version 2.2.
super(B, self).init()是这样实现继承的:super(B, self)首先找B的父类(就是类A),然后把类B的对象self转换为类A的对象,然后被转换后的类A对象调用自己的init函数。
super 这种用法只有指明子类的机制,虽然是一种解决缺陷的办法但是可能也存在问题。而多继承类定义中有其他的方式,我们以后碰到再讲。
更详细的讲解在这里: http://www.jb51.net/article/66912.htm
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 用Python分析广州房地产市场
- 面试题-JAVA之HashMap-put方法源码分析
- 案例实战 | Python 玩转 AB 测试中的分层抽样与假设检验!(附代码和数据集)
- Python 3.10 明年发布,看看都有哪些新特性?
- R可视化 | 混合多个图形
- 爱了!爱了!一款用 pandas 玩转 SQL 的神器
- 详细了解JS Map,它和传统对象有什么区别?
- Java HelloWorld 學習
- Bytecodes.java
- GenerateOopMap.java
- CellTypeState.java
- 终于开始了,微软的野心将通过全场景开发平台.NET 5体现得淋漓尽致!
- 微信小程序开发实战(27):录音
- 微信小程序开发实战(28):播放、暂停、停止声音
- 微信小程序开发实战(29):控制背景音乐