目录
面向对象
- 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性【信息】和方法【要完成的事情】。对象是类的实例。类是抽象的,不能直接使用。
- 实例化:创建一个类的实例,类的具体对象。
- 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
定义类的格式
class 类(): pass
如何将类转换为对象
实例化 —— 实例化指在面向对象编程中,使用类创建对象的过程称为实例化,是将一个抽象的概念具体化的过程
实例化过程 —— 类名 对象名 = 类名(参数1,参数2, ...)
实例
示例1:
小明今年18岁,身高1.75,每天早上要跑步,跑完去吃饭
小美今年16岁,身高1.65,小美不跑步,喜欢吃东西
class People():
# 初始化方法
def __init__(self,name,age,height):
# 将self和name封装在一起,=后name为所传入的值
self.name = name
self.age = age
self.height = height
# 字符串方法,用来返回字符串
def __str__(self):
return 'I am %s' %self.name
def eat(self):
print('%s is eating' %self.name)
def run(self):
print('%s is running' %self.name)
p1 = People('dsd',24,183)
print(p1.name,p1.age,p1.height)
p1.run()
p1.eat()
print(p1)
示例2:
需求
1.小明和小美都爱跑步
2.小美体重45.0公斤
3.小明体重75.0公斤
4.每次跑步都会减少0.5公斤
5.每次吃东西都会增加1公斤
class People():
def __init__(self,name,weight):
self.name = name
self.weight = weight
def __str__(self):
return '%s weight is %.2f' %(self.name,self.weight)
def eat(self):
self.weight += 1.0
def run(self):
self.weight -= 0.5
xiaoming = People('xiaoming',75.0)
xiaoming.eat()
print(xiaoming)
xiaoming.run()
print(xiaoming)
xiaomei = People('xiaoming',45.0)
xiaomei.run()
print(xiaomei)
xiaomei.eat()
print(xiaomei)
示例3:
栈:如何用类方法定义一个栈
class Stack(object):
def __init__(self):
# 定义一个空列表,相当于一个空栈,用来存储和读取
self.stack = []
# 用来检测长度
def __len__(self):
return len(self.stack)
def top(self):
# 判断栈是否为空
if not self.is_empty():
return self.stack[-1]
# 抛出异常
raise Exception('stack is empty!')
def push(self,element):
self.stack.append(element)
def pop(self):
# 判断栈是否为空
if self.is_empty():
raise Exception('stack is empty!')
else:
item = self.stack.pop()
return item
def length(self):
return len(self.stack)
def is_empty(self):
return len(self.stack) == 0
# 实例化
stack = Stack()
stack.push(1)
stack.push(2)
print(stack.length())
item = stack.pop()
print('The pop item is: %s' %item)
print(stack.top())
print(stack.is_empty())
print(stack.pop())
print(stack.length())
print(stack.is_empty())
示例4:
1.房子有户型,总面积和家具名称列表
新房子没有任何的家具2.家具有名字和占地面积,其中
床:占4平米
衣柜:占2平米
餐桌:占1.5平米
3.将以上三件家具添加到房子中
4.打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表
class Furniture(object):
def __init__(self,name,area):
self.name = name
self.area = area
def __str__(self):
return '[%s] 占地 (%.2f) 平米' %(self.name,self.area)
# 房子
class House(object):
def __init__(self,unitType,area):
# 户型
self.unitType = unitType
# 总面积
self.area = area
# 家具名称列表
self.furniture_list = []
# 剩余面积
self.free_area = area
def __str__(self):
return ' 户型: %s\n 总面积: %.2f\n 剩余面积:%.2f\n 家具列表:%s\n' \
%(self.unitType,self.area,self.free_area,self.furniture_list)
def add_fur(self,item):
self.furniture_list.append(item.name)
self.free_area -= item.area
bed = Furniture('bed',4)
yigui = Furniture('yigui',2)
table = Furniture('table',1.5)
home = House('dsd',200)
home.add_fur(bed)
home.add_fur(yigui)
print(home)