Python面向对象

场景案例:

在我要自学网班级要求两名新同学Jack和Harry分别介绍自己的名字和来自哪座城市,然后分别说一句班级口号:“Hello,51zxw” 最终控制台打印效果如下:

1
2
3
4
5
My name is Jack and come from Beijing
Hello 51zxw!

My name is Harry and come from Shanghai
Hello 51zxw!

结合前面所学基础知识来实现:

1
2
3
4
5
6
7
8
9
name='Jack'
city='Beijing'
print("My name is %s and come from %s" %(name,city))
print("Hello 51zxw!")

name='Harry'
city='Shanghai'
print("My name is %s and come from %s" %(name,city))
print("Hello 51zxw!")

类与对象

现实世界中,随处可见的一种事物就是对象(万物皆对象),对象是事物存在的实体,如人类、汽车、动物、水果等。人类、汽车、动物、水果这些都是一个抽象的类别,我们所见到的实物都是这些类的实体的具体存在。

人类

  • 属性:种族,地域、性别、国家…..
  • 功能:走路、捕猎、生火、繁衍….
  • 具体对象:元谋人,中国人

学生

  • 属性:姓名,学号、城市、年龄….
  • 功能:听,说、读、写…
  • 具体对象:Jack 同学

面向对象元素

类(Class):

用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。

数据成员:

类的不同属性数据。

对象:

对象是类的实例

方法:

类中定义的函数,实现相关的功能。

面向对象编程

简称OOP(Object Oriented Programming),是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。

面向对象的设计思想是从自然界中来的,因为在自然界中,类(Class)和实例(Instance)的概念是很自然的。Class是一种抽象概念,比如我们定义的 Student类,是指学生这个概念,而实例(Instance)则是一个个具体的Student。

Python是一门面向对象的语言,在Python中创建一个类和对象是很容易的。

三大特性

  • 封装
  • 继承
  • 多态

Python 类与对象

定义类

1
2
class Student(object):
类体

class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的。通常如果没有明确的继承类,就使用object类,括号内一般为空默认就是继承Obejct类。这是所有类最终都会继承的类,也就是基类。

属性初始化

由于类可以起到模板的作用,因此,可以在创建实例对象的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的init方法,在创建实例的时候,就把name,city等属性绑上去:

1
2
3
4
5
class Student():
def __init__(self,name,city):
self.name=name
self.city=city
print("My name is %s and come from %s" % (name, city))

init方法的第一个参数永远是self,表示创建的实例本身,因此,在init方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。有了init方法,在创建实例的时候,就不能传入空的参数了,必须传入与init方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去。

注意:特殊方法“init”前后有两个下划线!!!

定义方法

类的方法除了第一个参数是self外,其他和普通函数一样。要调用一个方法,只需要在实例变量上直接调用,

1
2
3
4
5
6
7
8
class Student():
def __init__(self,name,city):
self.name=name
self.city=city
print("My name is %s and come from %s" % (name, city))

def talk(self):
print("Hello,51zxw")

生成调用实例对象

1
2
3
4
stu1=Student('Jack','Beijing')
stu1.talk()
stu2=Student('Harry','Shanghai')
stu2.talk()