class Cat: #类名用大驼峰 """定义了一个Cat类""" #属性 #方法 def eat(self): print("猫在吃鱼") def drink(self): print("猫在喝水") def introduce(self): #print("%s的年龄是%s"%(tom.name,tom.age)) print("%s的年龄是%s"%(self.name,self.age)) #创建一个对象 tom = Cat() tom.eat() tom.drink() #给tom的对象添加两个属性 tom.name = "汤姆" tom.age = 18 lanmao = Cat() lanmao.name = "蓝猫" lanmao.age = 20 lanmao.introduce()
class Cat: #类名用大驼峰 """定义了一个Cat类""" #属性 def __init__(self,new_name,new_age): #初始化对象, 创建对象后自动调用,返回创建对象的引用。称为魔法方法 self.name = new_name self.age = new_age def __str__(self): return "%s的年龄是%d"%(self.name,self.age) #方法 def eat(self): print("猫在吃鱼") def drink(self): print("猫在喝水") def introduce(self): #print("%s的年龄是%s"%(tom.name,tom.age)) print("%s的年龄是%s"%(self.name,self.age)) #创建一个对象 tom = Cat("汤姆",18) tom.eat() tom.drink() #给tom的对象添加两个属性 #tom.name = "汤姆" #tom.age = 18 lanmao = Cat("蓝猫",20) #lanmao.name = "蓝猫" #lanmao.age = 20 lanmao.introduce() print(tom) # 没有__str__()的时候打印的是引用地址,有,打印str的返回值 print(lanmao)
class SweetPotato: def __init__(self): self.cookedString = "生的" self.cookedLevel = 0 self.condiments = [] def __str__(self): return "地瓜 状态:%s(%d),添加的佐料有:%s"%(self.cookedString,self.cookedLevel,str(self.condiments)) def cook(self,cook_time): self.cookedLevel += cook_time if self.cookedLevel >= 0 and self.cookedLevel<3: self.cookedString = "生的" elif self.cookedLevel >=3 and self.cookedLevel<5: self.cookedString = "半生不熟" elif self.cookedLevel >=5 and self.cookedLevel<8: self.cookedString = "熟了" elif self.cookedLevel>8: self.cookedString = "考糊了" def addCondeiments(self,item): self.condiments.append(item) # 创建一个地瓜对象 di_gua = SweetPotato() print(di_gua) #开始烤地瓜 di_gua.cook(1) print(di_gua) di_gua.cook(1) print(di_gua) di_gua.addCondeiments("大蒜") di_gua.cook(1) print(di_gua) di_gua.cook(1) di_gua.addCondeiments("番茄酱") print(di_gua) di_gua.cook(1) print(di_gua) di_gua.cook(1) di_gua.addCondeiments("孜然") print(di_gua) di_gua.cook(1) print(di_gua) di_gua.addCondeiments("芥末") di_gua.cook(1) print(di_gua) di_gua.cook(1) print(di_gua) 地瓜 状态:生的(0),添加的佐料有:[] 地瓜 状态:生的(1),添加的佐料有:[] 地瓜 状态:生的(2),添加的佐料有:[] 地瓜 状态:半生不熟(3),添加的佐料有:['大蒜'] 地瓜 状态:半生不熟(4),添加的佐料有:['大蒜', '番茄酱'] 地瓜 状态:熟了(5),添加的佐料有:['大蒜', '番茄酱'] 地瓜 状态:熟了(6),添加的佐料有:['大蒜', '番茄酱', '孜然'] 地瓜 状态:熟了(7),添加的佐料有:['大蒜', '番茄酱', '孜然'] 地瓜 状态:熟了(8),添加的佐料有:['大蒜', '番茄酱', '孜然', '芥末'] 地瓜 状态:考糊了(9),添加的佐料有:['大蒜', '番茄酱', '孜然', '芥末']
class Home: def __init__(self,new_area,new_info,new_addr): self.area = new_area self.info = new_info self.addr = new_addr self.left_area = new_area self.contain_items = [] def __str__(self): msg = "房子的面积是:%d,可用面积是:%d,户型是:%s,地址是:%s"%(self.area,self.left_area,self.info,self.addr) msg +="房子的物品有:%s"%self.contain_items return msg def add_item(self,item): #self.left_area -= item.area #self.contain_items.append(item.name) self.left_area -= item.get_area() self.contain_items.append(item.get_name()) class Bed: def __init__(self,new_name,new_area): self.name = new_name self.area = new_area def __str__(self): return "%s的面积是%d"%(self.name,self.area) def get_area(self): return self.area def get_name(self): return self.name fangzi = Home(129,"三室一厅","北京市 朝阳区 长安街 666号") print(fangzi) bed1 = Bed("席梦思",4) print(bed1) fangzi.add_item(bed1) print(fangzi) 房子的面积是:129,可用面积是:129,户型是:三室一厅,地址是:北京市 朝阳区 长安街 666号房子的物品有:[] 席梦思的面积是4 房子的面积是:129,可用面积是:125,户型是:三室一厅,地址是:北京市 朝阳区 长安街 666号房子的物品有:['席梦思']
class Dog: def __init__(self,new_name): self.name = new_name self.__age = 0 # 定义了一个私有属性,属性的名字是__age def set_age(self,new_age): if new_age>0 and new_age<=100: self.__age = new_age else: self.__age = 0 def get_age(self): return self.__age dog = Dog("小白") dog.set_age(-30) print(dog.get_age())
class Dog: def __send_msg(self): print("正在发送短信") def send_msg(self,new_money): if new_money>10000: self.__send_msg() else: print("余额不足,请先充值 再发送短信") dog = Dog() dog.send_msg(300000)
class Dog: def __del__(self): print("----over----") dog1 = Dog() dog2 = dog1 del dog1 del dog2 # 执行完后,引用计数为0,调用 __del__() print("==================")
import sys
class T:
pass
t = T()
sys.getrefcount(t) # 测量引用计数,值为2,因为本身调用要产生1个
tt =t
sys.getrefcount(t) #值变为3