最近因为双十一和工作的事很忙,一直没有时间忙Python,想着现在有空赶紧更新我的博客。最近也一直在搜集Python的习题,有空的时候就练一练。好了上一章复习了函数,这一章就讲述类的用法。
类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。
在Python里,首字母大写的名称为类;举个实例具体说明:我们创建一个Dog类
class Dog(): #创建一个类
def __init__(self,name,age):
self.name=name
self.age=age
def sit(self):
print(self.name.title()+" is now sitting.")
def roll_over(self):
print(self.name.title()+" rolled over!")
1.使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。self为前缀的变量都可供类中的所有方法使用。
__int__方法 特别注意:这里是两个下划线__,self.name=name 获取储存在形参name中的值,并将值存贮在变量name中,这个变量自动关联到创建的实例中。
2.在这里例子里创建了两个方法,模拟小狗坐下和翻滚的动作。
运行方法如下:
my_dog=Dog('Hachi',6)
print("MY dog's name is "+my_dog.name.title()+".")
print("MY dog's age is "+str(my_dog.age)+" years old!")
my_dog.sit()
my_dog.roll_over()
访问实例的属性,使用句号表示法,如my_dog.name 。访问方法也使用句号表示法
输出如下:
对于给属性指定默认值
class Dog(): #创建一个类
def __init__(self,name,age):
self.name=name
self.age=age
self.color='white' #定义颜色,默认值为白色
def sit(self):
print(self.name.title()+" is now sitting.")
def roll_over(self):
print(self.name.title()+" rolled over!")
def color_describe(self): #打印颜色
print(self.name.title()+"'s color is "+self.color)
my_dog=Dog('hachi',6)
my_dog.sit()
my_dog.color_describe()
1.直接在方法__init__里添加一个新的变量,注意还是要以self为前缀。如上面,我定义了一个颜色为白色的变量color,输出如下:
2.对于设置的默认值,如何修改
a.直接修改属性的值
class Dog(): #创建一个类
def __init__(self,name,age):
self.name=name
self.age=age
self.color='white' #定义颜色,默认值为白色
def sit(self):
print(self.name.title()+" is now sitting.")
def roll_over(self):
print(self.name.title()+" rolled over!")
def color_describe(self): #打印性别
print(self.name.title()+"'s color is "+self.color)
my_dog=Dog('hachi',6)
my_dog.sit()
my_dog.color='black' #直接修改属性的值
my_dog.color_describe()
输出:
b.通过方法修改属性的值;在类里定义一个方法,用于更新属性值
class Dog(): #创建一个类
def __init__(self,name,age):
self.name=name
self.age=age
self.color='white' #定义颜色,默认值为白色
def sit(self):
print(self.name.title()+" is now sitting.")
def roll_over(self):
print(self.name.title()+" rolled over!")
def update_color(self,colors): #定义更新属性值
self.color=colors
def color_describe(self): #打印颜色
print(self.name.title()+"'s color is "+self.color)
my_dog=Dog('hachi',6)
my_dog.sit()
my_dog.update_color('gray')
my_dog.color_describe()
首先在类里定义一个update_color的方法,他接受属性值,并储存到self.color中,之后调用方法,提供实参gray,再利用color_describe方法打印颜色,输出如下:
c.通过方法直接递增属性值;
采用书上的实例,定义一个Car类,来定义里程值:
class Car():
def __init__(self,make,model,year): #初始化
self.make=make
self.model=model
self.year=year
self.odometer_reading=0 # 定义里程表的默认值
def get_describe(self): #定义描述整体信息的方法
long_name=str(self.year)+' '+self.make+' '+self.model
return long_name.title()
def update_odometer(self,milege): #定义更新属性值方法
if milege>=self.odometer_reading:
self.odometer_reading=milege
else: #确定数值不会回调
print("wrong data!")
def increment_odometer(self,miles): #定义递增方法
self.odometer_reading+=miles
def read_odometer(self): #打印里程数
print("This car has "+str(self.odometer_reading)+" miles")
my_new_car=Car('BWM','A4',2018)
print(my_new_car.get_describe())
my_new_car.read_odometer() #打印默认值
my_new_car.update_odometer(100)
my_new_car.read_odometer() #打印更新值
my_new_car.increment_odometer(50)
my_new_car.read_odometer() #打印递增值
输出如下: