目录
面向对象
- 类(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)
转载:https://blog.csdn.net/m0_37868230/article/details/105737231
查看评论