场景案例
在***班级要求两名新同学Jack和Harry分别介绍自己的名字和来自哪座城市,然后分别说一句班级口号:“Hello,51zxw”最终控制台打印效果如下:
结合前面所学的基础知识来实现:
name='Jack'
city='Beijing'
print("My name is %s and come from %s" %(name,city))
print("hello,51zxw")
name='Harry'
city='Shanghai'
print("My nama is %s and come from %s " %(name,city))
print("hello,51zxw")
思考几个问题?
1.如果老师要求全班50个同学依次以上面形式自我介绍,该怎么办?
2.每个同学介绍自己姓名和来自城市后,再顺便介绍自己的年龄?
3.每个同学自我介绍的代码有何相同特征?
类与对象
现实世界中,随处可见的一种事物就是对象,对象是事物存在的实体,如人类、汽车、动物、水果这些是一个抽象的类别,我们所见到的实物都是这些类的具体存在,因此类是对象的抽象集合,对象是类的具体表现。现实世界是万物皆对象。
人
属性:地域、肤色、国家…
功能:走路、思考、饮食、繁衍…
具体对象:中国人、非洲人…
学生
属性:姓名、学号、城市、年龄…
功能:听、说、读、写…
具体对象:Jack同学、Harry同学…
面向对象的关键要素:
类(Class)
用来描述具有相同属性和方法的对象的集合,它定义了该对象集合中的每个对象所共有的属性和方法。
数据成员
类的不同属性数据。
对象
对象是类的实例。
方法
类中定义的函数,实现相关的功能。
面向对象编程
简称OOP(Object Oriented Programming),是一种程序设计思想,OOP把对象作为程序的基本单元,一个对对象包含了数据和操作数据的函数(方法)
面向对象的设计思想是从自然界中来的,因为在自然界中,类(Class)和实例(Instance)的概念是很自然的。Class是一种抽象概念,比如我们定义的Student类,是指学生这个概念,而实例(Instance)则是一个个体的Studeng对象。
Python是一门面向对象的语言,在Python中创建一个类别和对象是很容易的。
三大特性
封装
继承
多态
定义类
Class student(object):
类体
Class是类的定义的关键词,class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(Object),表示该类是丛哪个类继承下来的。通常如果没有明确的继承类,就使用object类,括号内一般为空默认就是继承Object类。这是所有类最终都会继承的类,也就是基类。
属性初始化
由于类可以起到模板的作用,因此,可以在创建实例对象的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的_init_方法,如:在创建Student实例的时候,就把name,city等属性绑上去:
class Student():
def __init__(self,name,city):
self.name=name
self.city=city
print("My name is %s and come form %s" %(name,city))
init_方法的第一个参数永远是self,表示创建的实例本身,因此,在_init_方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。有了_inif 方法,在创建实例的时候,就不能传入空的参数了。必须传入与_init_方法匹配的参数。但self不需要传。Python解释器自己会把实例传进去。
定义方法
类的方法除了第一个参数是self外,其他和普通函数一样,要调用一个方法,只需要在实例变量上直接调用。
class Student():
def __init__(self,name,city):
self.name=name
self.city=city
print("My name is %s and come form %s" %(name,city))
def talk(self):
print("Hello 51zxw")
#生成实例对象
stu1=Student('Jack','Beijing')
stu1.talk()
stu2=Student('Harry','Shanghai')
stu2.talk()