# ban jia ju class Home: def __init__(self, addr, area): self.ad = addr self.ar = area self.furniture = [] self.rest_ar = area def __str__(self): return f‘房子地址是{self.ad};总面积是{self.ar};剩余空间是{self.rest_ar}\n家具有{self.furniture}‘ def add_furniture(self, fur): if self.rest_ar >= fur.area: # 精髓就这点,是fur.name,还有后面的剩余面积需要改变。 self.furniture.append(fur.name) self.rest_ar -= fur.area else: print(‘holy my shit!my house is not big enough!‘) class Furniture: def __init__(self, name, area): self.name = name self.area = area jia = Home(‘斐济‘, 1000) a = Furniture(‘big bed‘, 10) b = Furniture(‘big computer‘, 5) c = Furniture(‘gymnasium‘, 2000) d = Furniture(‘book shelf‘, 20) jia.add_furniture(a) jia.add_furniture(b) jia.add_furniture(c) jia.add_furniture(d) print(jia) # 出错点:1.写了一个home.add_furniture(a),虽然没报错但在这里不能这样写,若这样写,则self当做参数了,而且上面的self.area也显示报错,因为连锁反应,他没有area这个东西。用类对象.方法()这样写才对。 # 2.类名大写,误导了自己。 # 3.关于self能否直接.来调用,得看定义的初始化方法。__init__()和__str__一个可以直接在类里传参,一个默认调用print。get??!feel nice!
# # 问题:0:存储input过来信息的问题。1;列表双值调的问题,见微信代码!2.list覆盖的问题。 # class stu(): # def __init__(self,name,age): # self.name=name # self.age=age # def __str__(self): # return f‘名字为{self.name}年龄为{self.age}‘ # # stu_list=[] # for i in range(1,3): # # stu_list.append(a.name) # name=input(‘please input your name:‘) # age=int(input(‘please input your age:‘)) # if age >= 18: # a=stu(name, age) # stu_list.append(a) # print(a) class Stu: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return f‘名字为{self.name}年龄为{self.age}‘ list1 = [] for _ in range(1, 3): name = input(‘please input your name:‘) age = int(input(‘please input your age:‘)) s1 = Stu(name, age) # s1类型是是__main__.stu,不是它返回的字符串,打印s1才会返回字符串# 。若是指定了方法调,则返回具体数据类型。注意s1具有两个属性,区分它的返回值、 list1.append(s1) # list1类型是__main__.stu,更不是子对象返回的字符串。打印list1出现地址。这个有点nb,可以多层嵌套。 list2 = [] for i in list1: if i.age > 18: # 在这里体现出来了。i是一堆对象,指向stu的对象。 list2.append(i) print(i) # 打印这个对象,就是不断执行Stu
# 最后那个传参没写出来,窒息的声音。 class GameCharaters(): def show_big(self,a,b,c): print(f‘昵称:{self.a}\t攻击力:{self.b}\t生命值:{self.c}‘) def player_data(self): list_name=[] list_aggressivity=[] list_hit_point=[] for i in range (3): game_character=input(‘请输入游戏玩家的昵称、攻击力、生命值:‘) name,aggressivity,hit_point=game_character.split(‘,‘) list_name.append(name) list_aggressivity.append(aggressivity) list_hit_point.append(hit_point) index_a=list_aggressivity.index(max(list_aggressivity)) bigest_aggressivity=max(list_aggressivity) bigest_name=list_name[index_a] bigest_hit=list_hit_point[index_a] return bigest_name,bigest_aggressivity,bigest_hit a=GameCharaters() data=a.player_data() print(data)
原文:https://www.cnblogs.com/teark/p/14265411.html