一、类与对象
类:类是一个抽象的概念,在现实世界中不存在。
类本质上是在现实世界中具有共同特征的事物,通过提取这些共同特征形成的概念叫做“类”,比如人类、动物类、汽车类、鸟类等。 类其实就是一个模板,类中描述的是所有对象的“共同特征”。
实例化:对象还有一个别名叫做“实例”,通过类创建对象的过程叫做“实例化”。
对象:对象是一个具体的概念,在现实世界中真实存在的。
对象就是通过类创建出的真实的个体。
1.1 代码的方式定义类和对象
使用 class 语句来创建一个新类,class之后为类的名称(通常首字母大写)并以冒号结尾,例如:
class Car:
#方法
def getCarInfo(self):
print("车轮子个数:%d,颜色:%s"%(self.wheelNum,self.color)
def move(self):
print("移动中...")
在类中,可以定义所使用的方法,类中的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。 它表示类创建的实例本身,指向当前创建对象的内存地址。某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self,所以开发者只需要传递后面的参数即可。
举盖房子的例子:假设我们由‘商品房’这个类实例化出对象a 和 对象b 。这时候客户a和客户b都买了同一个设计图(同一个类)盖出的房子,但是他们想要自己的装修风格,这些装修风格就是对象a、对象b的特征。当装修队开始装修房子时,要根据不同风格进行装修。那么,如何选择装修风格呢?很简单,根据客户选择!所以,self其中代指的就是客户,也就是实例本身。
所以,具体的实例化过程是这样的,当使用‘商品房’这个类实例化出对象a 时,默认参数self会把对象a创建在某一个内存地址中;同理,在实例化出对象b 时,默认参数self会把对象b创建在另一个与a不同的内存地址中。就如同客户a和客户b买商品房不可能买的是同一套房子一样,self的制作就如同售楼处,可以让客户买到不同地址的房子,而且还会管理这些房号,让客户在装修时知道去几零几号装修。简而言之,可以把self理解成类在实例化对象时的管理工具。
刚才的代码中,我们定义了一个Car类; 就好比一张车的图纸,那么接下来就应该把图纸交给生成工人们去生成了。python中,可以根据已经定义的类去创建出一个个对象,创建对象的格式为: 对象名 = 类名()
class Car:
# 方法
def getCarInfo(self):
print('车轮子个数:%d, 颜色%s'%(self.wheelNum, self.color))
def move(self):
print("车正在移动...")
# 创建一个对象,并用变量Wuling来保存它的引用
Byd = Car()
Byd.color = 'white' #使用‘.’符号的方法添加类属性:车的颜色
Byd.wheelNum = 4 #使用‘.’符号的方法添加类属性:轮子数量
Byd.move() #使用‘.函数名()’的语法调用类中函数:车的行驶
print(Byd.color) #打印实例五菱的颜色属性
print(Byd.wheelNum) #打印实例五菱的车轮数量属性
我们添加了两个对象属性:wheelNum和color,如果再次创建一个对象的话,创建之后需要重新进行属性添加,这样做是比较麻烦的。是否可以在创建对象时,就可以顺便把属性给与呢?
这就是__init__()函数的作用。使用方法如下实例所示:
# 定义汽车类
class Car:
# 初始化函数,对象属性有默认值:4和white;也可以通过传参的方法对对象属性进行重新赋值
def __init__(self, wheelNum=4, color='white'):
self.wheelNum = wheelNum
self.color = color
# 定义类方法
def move(self):
print('车在行驶')
# 创建对象五菱神车,不传参时,属性使用默认值
Byd = Car()
print('Byd的颜色为:', Byd.color)
print('Byd轮胎数量为:', Byd.wheelNum)
# 创建对象自行车,传参时,新的传参值代替默认值
Bicycle = Car(2, 'black')
print('自行车的颜色为:', Bicycle.color)
print('自行车轮胎数量为:', Bicycle.wheelNum)
__init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去。
以上内容有任何错误和不足欢迎指正。
声明:以上内容并非本人原创,借鉴于Awrin。