1、特征即是属性2、行为即是方法
- class obj():
- 代码
- ....
语法:对象名 = 类名()
- #需求:洗衣机,功能:洗衣服
-
- #定义洗衣机类
- class Washer():
- def wash(self):
- print("能洗衣服")
-
- #创建对象
- haier = Washer()
-
- #3.验证成果
- #使用wash功能 --实例方法/对象方法 -- 对像名.Wash()
- #类里面定义的函数称为实例方法
- haier.wash()
- 注意:类里面定义的函数称为实例方法
- class Washer():
- def wash(self):
- print('洗衣服')
- print(self)
-
- haier = Washer()
- print(haier)
-
- haier.wash()
-
- #
- # 1.一个类可以创建多个对象
- #2.多个对象都调用函数的时候,self地址相同
- class Washer():
- def wash(self):
- print('洗衣服')
- print(self)
-
- harer1 = Washer()
- harer1.wash()
- harer2 = Washer()
- harer2.wash()
属性即使特征,比如:洗衣机的宽度、高度、重量....对象属性既 可以在类外面添加和获取,也能在类里面添加和获取。
语法对象名.属性名 = 值
语法对象名.属性名
- class Washer():
- def wash(self):
- print('洗衣服')
-
- haier1 = Washer()
-
- # 对象名.属性名 = 值
- haier1.width = 400
- haier1.height = 500
-
- #对象名.属性名
- print(f'haier1洗衣机的宽度是{haier1.width}')
- print(f'haier1洗衣机的高度是{haier1.height}')
- #定义类
- class Washer():
- def wash(self):
- print('洗衣机')
-
- def print_info(self):
- #self.属性名
- # print(self.width)
- # print(self.height)
- print(f'洗衣机的宽度{self.width}')
- print(f'洗衣机的高度{self.height}')
-
- haier1 = Washer()
-
- #添加属性
- haier1.width = 400
- haier1.height = 500
- haier1.wash()
-
- #对象调用方法
- haier1.print_info()
- #目标:定义init魔法方法设置初始化属性 并访问调用
- """
- 1.定义类
- init魔法方法:width 和 height
- 添加实例方法:访问实例属性
- 2.创建对象
- 3.验证成果
- """
-
- class Washer():
- def __init__(self):
- #添加实例属性
- self.width = 500
- self.height = 800
-
- def print_info(self):
- print(f'洗衣机的宽度是{self.width}')
- print(f'洗衣机的宽度是{self.height}')
-
- haier = Washer()
- haier.print_info()
- _init_()方法,在创建一个对象时默认被调用,不需要手动调用。
- _init_(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去。
- #1.定义类:带参数的init:宽度和高度:实例方法:调用实例属性
- class Washer():
- def __init__(self,width,height):
- self.widht = width
- self.height = height
-
- def print_info(self):
- print(f'洗衣机的宽度{self.widht},洗衣机的高度{self.height}')
-
- #2.创建对象,创建多个对象且属性值不同:调用实例方法
- haier1 = Washer(10,20)
- haier1.print_info()
-
- haier2 = Washer(100,200)
- haier2.print_info()
- 当使用print输出对象打的时候,默认打印对象的内存地址。如果类定义了_str_方法,那么就会打印从在这个方法中return的数据。
- class Washer():
- def __init__(self):
- self.width = 300
-
- def __str__(self):
- return '解释说明:类的说明或对象状态的说明'
-
- haier = Washer()
- print(haier) #解释说明:类的说明或对象状态的说明
- class Washer():
- def __init__(self):
- self.width = 300
-
- #自动调用
- def __del__(self):
- print('对象一已经删除')
-
- haier = Washer()
1.被烤的时间和对应的地瓜状态0-3分钟:生的3-5分钟:半生熟5-8分钟:熟的超过8分钟:烤糊了2.添加调料用户按自己的意愿添加调用
定义类地瓜的属性被烤的时间地瓜的状态添加的调料地瓜的方法被烤用户根据意愿设定每次烤地瓜的时间判断地瓜被烤的总时间是在哪个区间,修改地瓜状态添加调料用户根据意愿设定添加的调料将用户添加的调料存储显示对象信息
- class SweetPotato():
- def __init__(self):
- #定义属性:成员变量
-
- #被烤的时间
- self.cook_time = 0
- #烤的状态
- self.cook_state = '生的'
- #调料列表
- self.condiments = []
-
- #定义方法:成员函数
- def cook(self,time):
- """烤地瓜方法"""
- #1.先计算地瓜整体考过的时间
- self.cook_time += time
- #2.用整体烤过的时间在判断地瓜的状态
- if 0 <= self.cook_time < 3:
- #生的
- self.cook_state = '生的'
- elif 3 <= self.cook_time <5:
- #半生不熟
- self.cook_state = '半生不熟'
- elif 5 <= self.cook_time < 8:
- #熟了
- self.cook_state = '熟了'
- elif self.cook_time >= 8:
- #烤糊了
- self.cook_state = '烤糊了'
-
- def add_condiments(self,condiment):
- #用户意愿的调料追加到调料列表
- self.condiments.append(condiment)
-
- def __str__(self):
- return f'这个地瓜的被烤过的时间是{self.cook_time}分钟,' \
- f'状态是{self.cook_state},调料有{self.condiments}'
-
- #2.创建对象并调用对应的实例方法
- digua1 = SweetPotato()
- print(digua1)
-
- digua1.cook(2)
- digua1.add_condiments('辣椒')
- print(digua1)
-
- #多次调用测试时间是否相加
- digua1.cook(2)
- digua1.add_condiments('酱油')
- print(digua1)
将小于房子剩余面积的家具摆放到房子中
需求涉及两个事务:房子和家具,故该案例涉及两个类:房子类和家具类
实例属性房子地理位置房子占地面积房子剩余面积房子内家具列表实例方法容纳家具显示房屋信息
家具名称家具占地面积
- #家具类
- class Furniture():
- def __init__(self,name,area):
- #家具名字
- self.name = name
- #家具占地面积
- self.area = area
- #定义房屋类
- class Home():
- def __init__(self,address,area):
- #地理位置
- self.address = address
- #房屋面积
- self.area = area
- #剩余面积
- self.free_area = area
- #家具列表
- self.furniture = []
-
- def __str__(self):
- return f'房子地理位置在{self.address},' \
- f'房屋面积是{self.area},剩余面积{self.free_area},家具有{self.furniture}'
-
-
- def add_furniture(self,item):
- """容纳家具"""
- #如果 家具占地面积 <= 房子剩余面积: 可以搬入(家具列表添加家具名字数据并将房子剩余面积更新:
- # 房屋剩余面积 - 该家具的占地面积
- # 否则:提示用户家具太大,剩余面积不足,无法容纳
- # )
- if item.area <= self.free_area:
- self.furniture.append(item.name)
- self.free_area -= item.area
- else:
- print('用户家具太大,剩余面积不足,无法容纳')
-
- #双人床, 6
- bed = Furniture('双人床',6)
- sofa = Furniture('沙发',10)
-
-
- #房子1:北京 2.上海
- jia1 = Home('北京',1000)
- print(jia1)
-
-
- #开始般家具
- jia1.add_furniture(bed)
- print(jia1)
-
-
- ball = Furniture('游泳池',2000)
- jia1.add_furniture(ball)
- print(jia1)
class 类名():代码
对象名 = 类名()
对象名 = 类名
self.属性名 = 值
对象名.属性名
self.属性名
_init_():初始化_str_():输出对象信息_del_():删除对象时调用