第12课 类和对象丨课件-八年级信息技术(Python)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例如,如下类定义是允许的: class User():
pass
类的创建
在类中创建一个函数时,系统自动在函数中添加self参数。哪 一个对象调用的方法,self就是哪一个对象的引用;在调用方法时, 不需要传递self参数。在方法内部调用对象的属性可以使用 self. 的 方式,也可以通过 self. 调用其他的对象方法。语法格式如下: class 类名:
对象的特性
➢ 身份(ID) 每一个对象都有一个唯一的身份标识自己,对象一旦建立,它的
ID永远不会改变,你可以认为它是该对象在内存中的地址。 内建函数 id() 函数返回一个表示对象ID的整数。 >>> a=12 >>> b=a >>> id(a),id(b)
程序执行结果为: (140736738153856, 140736738153856)
对象的属性
class CLanguage: a=1 b=2 def __init__ (self): self.name = "编程语言网" self.add = "c.biancheng.net"
#通过类名调用__dict__ print(CLanguage.__dict__) #通过类实例对象调用 __dict__ clangs = CLanguage() print(clangs.__dict__)
class 类名: 执行语句… 零个到多个类变量… 零个到多个方法…
类的定义
➢ 定义一个简单的类: 与函数定义相同,在使用类之前必须先定义类。类的定义一
般放在脚本的头部,以冒号(:)作为类体的开始,以统一缩进的部 分作为类体的。区别只是函数定义使用 def 关键字,而类定义则使 用 class 关键字。
类的初始化
class CLanguage :
def __init__(self,name,add):
#下面定义 2 个实例变量
self.name = name 程序执行结果为:
self.add = add
编程语言 网址为: http://c.biancheng.net
print(name,"网址为:",add)
的基本形式如下: class <类名>(父类名): 执行语句… 零个到多个类变量… 零个到多个方法… 其中圆括号中的父类名就是要继承的类。
类的定义
➢ 空类: Python 的类定义由类头(指 class 关键字和类名部分)和统
一缩进的类体构成,在类体中最主要的两个成员就是类变量和方法。 如果不为类定义任何类变量和方法,那么这个类就相当于一个空类, 如果空类不需要其他可执行语句,则可使用 pass 语句作为占位符。
对象的概念
对象:是类的一个实例,比如:大卡车是车的一个实例。类 是把对象抽象化,对象是把类实例化,一个类为它的全部对象给出 了一个统一的定义,而他的每个对象则是符合这种定义的一个实体。
Python 使用对象模型来存储数据,构造的任何类型的值都是 一个对象(比如我们创建的整数:26,字符串:“hello world”, 列表:[1, 2, 3] 等都是对象)。
➢ 给类对象动态添加/删除变量 直接增加一个新的实例变量并为其赋值,就成功地为对象添加变
量,反之可以使用 del 语句进行删除。
类的继承
面向对象的编程带来的主要好处之一是代码的重用,实现这 种重用的方法之一是通过继承机制。继承完全可以理解成类之间的 类型和子类型关系。
继承语法为 :class 派生类名(基类名): 派生类的声明,与他们的父类类似,继承的基类列表跟在类 名之后。
面向对象
➢ 面向对象的特征: (1)封装:对外部隐藏对象的工作细节。 (2)继承:子类自动共享父类之间数据和方法的机制。 (3)多态:可以对不同类的对象调用相同的方法,产生不同
的结果。
类的定义
➢ 定义一个简单的类: 在 Python 中,类的定义与函数的定义类似,所不同的是,
类的定义是使用关键字 "class"。与函数定义相同的是,在定义类 时也要使用缩进的形式,以表示缩进的语句属于该类。Python 定 义类的简单语法如下:
类的初始化
Python类中的每个属性都必须有初始值。可以在__init__()方 法内为某个属性设置默认初始值,此时无需包含为它提供初始值的 形参。语法:
def __init__(self,变量1,变量2,变量3,...): #初始化属性 self.属性1=变量1 self.属性2=变量2 self.属性3=变量3 ......
类的初始化
初始化传入的值想要被其他方法调用,就要把这些值赋值给 对象,也就是self.属性名,只有赋值给对象的属性才能被其他方法 调用(也可以赋值给类,这样的话对象和类都可以调用如类名.属性 名)。
注意,此方法的方法名中,开头和结尾各有 2 个下划线,且 中间不能有空格。
另外,__init__() 方法可以包含多个参数,但必须包含一个名 为 self 的参数,且必须作为第一个参数。也就是说,类的构造方法 最少也要有一个 self 参数。
对象的特性
➢ 类型 每个对象的头部信息中都有一个类型标识符来标识这个对象的类
型(比如:int、str、dict等)。 type() 函数返回对象的类型(它本身也是一个对象)。与ID 一
样,对象的类型也是不可以修改的。
>>> a=12 >>> b="hello python" >>> type(a),type(b)
12 类和对象
面向对象
➢ 面向对象的含义 面向对象编程(简称 OOP),是一种封装代码的方法。代码
封装,其实就是隐藏实现功能的具体代码,仅留给用户使用的接口, 就好像使用计算机,用户只需要使用键盘、鼠标就可以实现一些功 能,而根本不需要知道其内部是如何工作的。
面向对象
➢面向对象的含义 打个比方,若在某游戏中设计一个乌龟的角色,应该如何来
其行为特征可以通过建立各种函数来表示。参考代码如下所示:
class tortoise: bodyColor = "绿色" footNum = 4 weight = 10 hasShell = True
def crawl(self): print("乌龟会爬")
def eat(self): print("乌龟吃东西")
面向对象
➢面向对象相关术语 类:可以理解是一个模板,通过它可以创建出无数个具体实
例。比如,前面编写的 tortoise 表示的只是乌龟这个物种,通过 它可以创建出无数个实例来代表各种不同特征的乌龟(这一过程又 称为类的实例化)。
对象:类并不能直接使用,通过类创建出的实例(又称对象) 才能使用。这有点像汽车图纸和汽车的关系,图纸本身(类)并不 能为人们使用,通过图纸创建出的一辆辆车(对象)才能使用。
在 Python 类的内部,无论是类属性还是实例属性,都是以 字典的形式进行存储的,其中属性名作为键,而值作为该键对应的 值。
为了方便用户查看类中包含哪些属性,Python 类提供了 __dict__ 属性。需要注意的一点是,该属性可以用类名或者类的实 例对象来调用,用类名直接调用 __dict__,会输出该由类中所有类 属性组成的字典;而使用类的实例对象调用 __dict__,会输出由类 中所有实例属性组成的字典。
程序执行结果为: {'__module__': '__main__', 'a': 1, 'b': 2, '__init__': <function CLanguage.__init__ at 0x00000132D2FBEB70>, '__dict__': <attribute '__dict__' of 'CLanguage' objects>, '__weakref__': <attribute '__weakref__' of 'CLanguage' objects>, '__doc__': None} {'name': '编程语言网', 'add': 'c.biancheng.net'}
程序执行结果为: (<class 'int'>, <class 'str'>)
对象的特性
➢值 某些值可以改变的对象称为可变对象;一旦建立,值就不可以改
变的对象称为不可变对象。一个对象的可变性由它的类型所决定。
注意:上面三个特性在对象创建的时候就被赋值,除了值之外, 其它两个特性都是只读的。
对象的属性
谢谢!
面向对象
➢ 面向对象相关术语 属性:类中的所有变量称为属性。例如,tortoise 这个类中,
bodyColor、footNum、weight、hasShell 都是这个类拥有的属 性。
方法:类中的所有函数通常称为方法。不过,和函数所有不 同的是,类方法至少要包含一个 self 参数(后续会做详细介绍)。 例如,tortoise 类中,crawl()、eat()、sleep()、protect() 都是这 个类所拥有的方法,类方法无法单独使用,只能和类的对象一起使 用。
类名只要是一个合法的标识符即可,但这仅仅满足的是 Python 的语法要求,如果从程序的可读性方面来看,Python 的 类名必须是由一个或多个有意义的单词连缀而Βιβλιοθήκη Baidu的,每个单词首字 母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。
类的定义
➢ 父类: 类还可以通过继承的形式来进行定义。通过类继承来定义类
实现呢?使用面向对象的思想会更简单,可以分为如下两个方面进 行描述:
从表面特征来描述,例如,绿色的、有 4 条腿、重 10 kg、 有外壳等等。
从所具有的的行为来描述,例如,它会爬、会吃东西、会睡 觉、会将头和四肢缩到壳里,等等。
面向对象
➢ 面向对象的含义 如果将乌龟用代码来表示,则其表面特征可以用变量来表示,
# 将该CLanguage对象赋给clanguage变量
clanguage = CLanguage("编程语言","http://c.biancheng.net")
类的访问
➢ 类对象访问变量或方法 使用已创建好的类对象访问类中实例变量的语法格式如下: 类对象名.变量名 使用类对象调用类中方法的语法格式如下: 对象名.方法名(参数) 注意,对象名和变量名以及方法名之间用点 "." 连接。
def 方法1(self,参数列表): pass
def 方法2(self,参数列表):
类的创建
class Person: def run(self): print("跑步功能") def eat(self): print("吃饭")
程序执行结果为: 吃饭 跑步功能 跑步功能 吃饭
# 创建两个Person对象,并分别 调用类中的两个方法 tom = Person() tom.eat() tom.run() danni = Person() danni.run() danni.eat()
pass
类的创建
在类中创建一个函数时,系统自动在函数中添加self参数。哪 一个对象调用的方法,self就是哪一个对象的引用;在调用方法时, 不需要传递self参数。在方法内部调用对象的属性可以使用 self. 的 方式,也可以通过 self. 调用其他的对象方法。语法格式如下: class 类名:
对象的特性
➢ 身份(ID) 每一个对象都有一个唯一的身份标识自己,对象一旦建立,它的
ID永远不会改变,你可以认为它是该对象在内存中的地址。 内建函数 id() 函数返回一个表示对象ID的整数。 >>> a=12 >>> b=a >>> id(a),id(b)
程序执行结果为: (140736738153856, 140736738153856)
对象的属性
class CLanguage: a=1 b=2 def __init__ (self): self.name = "编程语言网" self.add = "c.biancheng.net"
#通过类名调用__dict__ print(CLanguage.__dict__) #通过类实例对象调用 __dict__ clangs = CLanguage() print(clangs.__dict__)
class 类名: 执行语句… 零个到多个类变量… 零个到多个方法…
类的定义
➢ 定义一个简单的类: 与函数定义相同,在使用类之前必须先定义类。类的定义一
般放在脚本的头部,以冒号(:)作为类体的开始,以统一缩进的部 分作为类体的。区别只是函数定义使用 def 关键字,而类定义则使 用 class 关键字。
类的初始化
class CLanguage :
def __init__(self,name,add):
#下面定义 2 个实例变量
self.name = name 程序执行结果为:
self.add = add
编程语言 网址为: http://c.biancheng.net
print(name,"网址为:",add)
的基本形式如下: class <类名>(父类名): 执行语句… 零个到多个类变量… 零个到多个方法… 其中圆括号中的父类名就是要继承的类。
类的定义
➢ 空类: Python 的类定义由类头(指 class 关键字和类名部分)和统
一缩进的类体构成,在类体中最主要的两个成员就是类变量和方法。 如果不为类定义任何类变量和方法,那么这个类就相当于一个空类, 如果空类不需要其他可执行语句,则可使用 pass 语句作为占位符。
对象的概念
对象:是类的一个实例,比如:大卡车是车的一个实例。类 是把对象抽象化,对象是把类实例化,一个类为它的全部对象给出 了一个统一的定义,而他的每个对象则是符合这种定义的一个实体。
Python 使用对象模型来存储数据,构造的任何类型的值都是 一个对象(比如我们创建的整数:26,字符串:“hello world”, 列表:[1, 2, 3] 等都是对象)。
➢ 给类对象动态添加/删除变量 直接增加一个新的实例变量并为其赋值,就成功地为对象添加变
量,反之可以使用 del 语句进行删除。
类的继承
面向对象的编程带来的主要好处之一是代码的重用,实现这 种重用的方法之一是通过继承机制。继承完全可以理解成类之间的 类型和子类型关系。
继承语法为 :class 派生类名(基类名): 派生类的声明,与他们的父类类似,继承的基类列表跟在类 名之后。
面向对象
➢ 面向对象的特征: (1)封装:对外部隐藏对象的工作细节。 (2)继承:子类自动共享父类之间数据和方法的机制。 (3)多态:可以对不同类的对象调用相同的方法,产生不同
的结果。
类的定义
➢ 定义一个简单的类: 在 Python 中,类的定义与函数的定义类似,所不同的是,
类的定义是使用关键字 "class"。与函数定义相同的是,在定义类 时也要使用缩进的形式,以表示缩进的语句属于该类。Python 定 义类的简单语法如下:
类的初始化
Python类中的每个属性都必须有初始值。可以在__init__()方 法内为某个属性设置默认初始值,此时无需包含为它提供初始值的 形参。语法:
def __init__(self,变量1,变量2,变量3,...): #初始化属性 self.属性1=变量1 self.属性2=变量2 self.属性3=变量3 ......
类的初始化
初始化传入的值想要被其他方法调用,就要把这些值赋值给 对象,也就是self.属性名,只有赋值给对象的属性才能被其他方法 调用(也可以赋值给类,这样的话对象和类都可以调用如类名.属性 名)。
注意,此方法的方法名中,开头和结尾各有 2 个下划线,且 中间不能有空格。
另外,__init__() 方法可以包含多个参数,但必须包含一个名 为 self 的参数,且必须作为第一个参数。也就是说,类的构造方法 最少也要有一个 self 参数。
对象的特性
➢ 类型 每个对象的头部信息中都有一个类型标识符来标识这个对象的类
型(比如:int、str、dict等)。 type() 函数返回对象的类型(它本身也是一个对象)。与ID 一
样,对象的类型也是不可以修改的。
>>> a=12 >>> b="hello python" >>> type(a),type(b)
12 类和对象
面向对象
➢ 面向对象的含义 面向对象编程(简称 OOP),是一种封装代码的方法。代码
封装,其实就是隐藏实现功能的具体代码,仅留给用户使用的接口, 就好像使用计算机,用户只需要使用键盘、鼠标就可以实现一些功 能,而根本不需要知道其内部是如何工作的。
面向对象
➢面向对象的含义 打个比方,若在某游戏中设计一个乌龟的角色,应该如何来
其行为特征可以通过建立各种函数来表示。参考代码如下所示:
class tortoise: bodyColor = "绿色" footNum = 4 weight = 10 hasShell = True
def crawl(self): print("乌龟会爬")
def eat(self): print("乌龟吃东西")
面向对象
➢面向对象相关术语 类:可以理解是一个模板,通过它可以创建出无数个具体实
例。比如,前面编写的 tortoise 表示的只是乌龟这个物种,通过 它可以创建出无数个实例来代表各种不同特征的乌龟(这一过程又 称为类的实例化)。
对象:类并不能直接使用,通过类创建出的实例(又称对象) 才能使用。这有点像汽车图纸和汽车的关系,图纸本身(类)并不 能为人们使用,通过图纸创建出的一辆辆车(对象)才能使用。
在 Python 类的内部,无论是类属性还是实例属性,都是以 字典的形式进行存储的,其中属性名作为键,而值作为该键对应的 值。
为了方便用户查看类中包含哪些属性,Python 类提供了 __dict__ 属性。需要注意的一点是,该属性可以用类名或者类的实 例对象来调用,用类名直接调用 __dict__,会输出该由类中所有类 属性组成的字典;而使用类的实例对象调用 __dict__,会输出由类 中所有实例属性组成的字典。
程序执行结果为: {'__module__': '__main__', 'a': 1, 'b': 2, '__init__': <function CLanguage.__init__ at 0x00000132D2FBEB70>, '__dict__': <attribute '__dict__' of 'CLanguage' objects>, '__weakref__': <attribute '__weakref__' of 'CLanguage' objects>, '__doc__': None} {'name': '编程语言网', 'add': 'c.biancheng.net'}
程序执行结果为: (<class 'int'>, <class 'str'>)
对象的特性
➢值 某些值可以改变的对象称为可变对象;一旦建立,值就不可以改
变的对象称为不可变对象。一个对象的可变性由它的类型所决定。
注意:上面三个特性在对象创建的时候就被赋值,除了值之外, 其它两个特性都是只读的。
对象的属性
谢谢!
面向对象
➢ 面向对象相关术语 属性:类中的所有变量称为属性。例如,tortoise 这个类中,
bodyColor、footNum、weight、hasShell 都是这个类拥有的属 性。
方法:类中的所有函数通常称为方法。不过,和函数所有不 同的是,类方法至少要包含一个 self 参数(后续会做详细介绍)。 例如,tortoise 类中,crawl()、eat()、sleep()、protect() 都是这 个类所拥有的方法,类方法无法单独使用,只能和类的对象一起使 用。
类名只要是一个合法的标识符即可,但这仅仅满足的是 Python 的语法要求,如果从程序的可读性方面来看,Python 的 类名必须是由一个或多个有意义的单词连缀而Βιβλιοθήκη Baidu的,每个单词首字 母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。
类的定义
➢ 父类: 类还可以通过继承的形式来进行定义。通过类继承来定义类
实现呢?使用面向对象的思想会更简单,可以分为如下两个方面进 行描述:
从表面特征来描述,例如,绿色的、有 4 条腿、重 10 kg、 有外壳等等。
从所具有的的行为来描述,例如,它会爬、会吃东西、会睡 觉、会将头和四肢缩到壳里,等等。
面向对象
➢ 面向对象的含义 如果将乌龟用代码来表示,则其表面特征可以用变量来表示,
# 将该CLanguage对象赋给clanguage变量
clanguage = CLanguage("编程语言","http://c.biancheng.net")
类的访问
➢ 类对象访问变量或方法 使用已创建好的类对象访问类中实例变量的语法格式如下: 类对象名.变量名 使用类对象调用类中方法的语法格式如下: 对象名.方法名(参数) 注意,对象名和变量名以及方法名之间用点 "." 连接。
def 方法1(self,参数列表): pass
def 方法2(self,参数列表):
类的创建
class Person: def run(self): print("跑步功能") def eat(self): print("吃饭")
程序执行结果为: 吃饭 跑步功能 跑步功能 吃饭
# 创建两个Person对象,并分别 调用类中的两个方法 tom = Person() tom.eat() tom.run() danni = Person() danni.run() danni.eat()