Python 类与对象
更多资料下载,冲击月薪过万,一线经验工程师录制,
干货满满的嵌入式视频教程,请点击淘宝店:wanglitao.taobao.com
一切皆对象
在Python中,一切皆对象。我们通过属性和行为来描述一个对象。比如上一节我们定义的一个小狗,它的颜色、大小、 体重等是它的属性和特征,跑、叫等是它的行为。Python中一切数据都是对象,包括自定义的对象及基本的数据类型如数值、列表、字典、元组、字符串等。每个对象都有三个基本属性:标识、类型和值。我们在描述抽象客观世界的一个真实事物时,主要包含两个方面:
- 它是什么样的(属性)
- 它可以做什么(行为)
在Python中,一个对象的特征称为属性,它所具有的行为称为方法。
某种程度上,可以认为:
在Python中,我们把具有相同属性和方法的对象归结为一个类(class)。对象 = 属性 + 方法
类是对象的模板,是对象的抽象。对象是类的实例化。
在上一节中,可以看到,当创建一个类时,我们可以定义一个__init__方法,当我们使用该类创建一个类的实例—对象时,可以运行这个方法,并通过参数传递来进行对象的初始化,这样创建对象时就可以通过参数设定把属性设置为我们所希望的值。
# -*- coding:utf-8 -*-
#Filename:class.py
class Dog:
def __init__(self, name):
self.name = name
print 'Create a object:%s'%self.name
def speak(self):
print '%s:wangwang'%self.name
mydog1 = Dog('阿黄')
mydog1.speak()
mydog2 = Dog('大黄')
mydog2.speak()
运行结果:
C:\Python27\python.exe F:/python/python_proj/class.py
Create a object:阿黄
阿黄:wangwang
Create a object:大黄
大黄:wangwang
Process finished with exit code 0
通过结果可以看到,我们创建不同的对象时,可以通过 __init__ 方法来给我们不同的对象赋值。同时,speak方法在调用时,通过该函数的self参数会告诉方法是哪个对象来调用的,我们称为实例引用。
类的变量与对象的变量
在类中定义的变量称为类的变量,使用self赋值的变量为对象的变量,两者的作用域是不同的。类的变量由一个类的所有实例化对象共享使用,当所有实例化对象中有一个对象对该类的变量做了重新赋值操作时,这个改动会反映到所有其它的实例化对象中。
而对象的变量,由类的每一个实例化对象分别拥有,每一个对象都有自己对这个域的一份拷贝。一个类的所有不同实例中,每个对象的变量虽然有相同的名字但是处于不同的作用域,是互不关联的。
# -*- coding:utf-8 -*-
#Filename:class.py
class Dog:
dog_num = 0
def __init__(self, name,id):
Dog.dog_id = id
self.name = name
Dog.dog_num = Dog.dog_num + 1
print 'Create a object:%s'%self.name
print 'object ID:%d '%Dog.dog_id
def speak(self):
print '%s:wangwang'%self.name
mydog1 = Dog('阿黄',001)
mydog1.speak()
mydog2 = Dog('大黄',002)
mydog2.speak()
运行结果:
C:\Python27\python.exe F:/python/python_proj/class.py
Create a object:阿黄
object ID:1
阿黄:wangwang
Create a object:大黄
object ID:2
大黄:wangwang
Process finished with exit code 0
通过结果,我们可以看到,dog_num作为类的成员变量,当有一个对象改变它时,会反映到其它对象上。而dog_id作为对象的变量,不会影响当其它对象的相同名字的成员变量的使用。
《Linux三剑客》视频教程,从零开始快速掌握Linux开发常用的工具:Git、Makefile、vim、autotools、debug,免费赠送C语言视频教程,C语言项目实战:学生成绩管理系统。详情请点击淘宝链接:Linux三剑客