类和对象
对象是类创造出来真实存在的
必须先有类,后有对象。
定义类:
class 类名():
代码
实例
#定义类( 洗衣机)
class washer():
#定义方法(行为),洗衣服
def wash(self):#self就是创建对象的实例化本身在这里面就wash
print("wash")
#创建洗衣机对象
wash=washer()
#输出表示,前面表示在washer这个类中,后面表示他的地址
print(wash)
#调用对象的方法
wash.wash()
self是指调用对象本身
添加对象属性,和获取对象属性
属性就是事物所具有的特征,比如长宽高。
对象的属性可以在类外进行添加和获取,也可以在类内进行。
在类外添加属性
对象.属性名=值
在类内获取属性
在类内获取对象的属性:self.属性名
class washer():#类外的属性,另一个对象不一定有
def wash(self):
print("wash")
print("类中的对象的属性值为",self.brand)#这里面有self,那基本就是wash.brand
wash=washer()
wash.brand="小天鹅"
print("对象中的,",wash.brand)
wash.wash()
特殊方法
__init__方法
会自动使用,来初始化类内属性
带参数的__init__方法,初始化对象
类中的方法,第一个参数必须是self
class Washer():#类内的属性,所有对象都有
def __init__(self,width,height):#__init__主要是为了能在类中进行对象属性的初始化,而且它能够自动执行。
self.width=width
self.height=height
print("执行啦")
def info_print(self):
print(f"self.width={self.width},self.height={self.height}")
washer1=Washer(500,600)
washer1.info_print()
__str__方法
输出对象本身的时候才去调用。详情请看代码注释。
class washer():
def __init__(self, width, height): # __init__主要是为了能在类中进行对象属性的初始化,而且它能够自动执行。
self.width=width
self.height=height
print("执行啦")
def __str__(self):
return f"self.width={self.width},self.height={self.height}"
washer1=washer(500,500)
print(washer1)#之前未加字符串的时候,输出的就是对象的地址,没有什么意义了。加上之后就是self.width=500,self.height=500
__del__方法
删除对象的时候,会调用该对象的类中的del方法
class washer():
def __init__(self, width, height): # __init__主要是为了能在类中进行对象属性的初始化,而且它能够自动执行。
self.width=width
self.height=height
print("执行啦")
def __str__(self):
return f"self.width={self.width},self.height={self.height}"
def __del__(self):#在删除的时候执行,告诉你删除了已经。
print(f"删除对象{self}")
washer1=washer(500,500)
print(washer1)#之前未加字符串的时候,输出的就是对象的地址,没有什么意义了。加上之后就是self.width=500,self.height=500
del washer1
下面是一个具体实例,往房子里面搬东西,直到最后一件家具大于剩余面积后终止。
#定义家具类
class Furniture():
#用init方法,初始对象属性。
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},房子的面积是{self.area},房子的剩余面积是{self.free_area},家具有{self.furniture}"
def add_furniture(self,furn):
if furn.area<=self.free_area:
self.furniture.append(furn.name)
self.free_area-=furn.area
else:
print("家具面积大于剩余面积,不可以放进去")
home1=Home("北京",120)
# print(home1)#房子的地理位置北京,房子的面积是120,房子的剩余面积是120,家具有[]
furn1=Furniture('桌子',33)
home1.add_furniture(furn1)
print(home1)