python基础(第九章)面向对象

print('---面向对象-----')
'''
知识点汇总
1-面向对象的引入:
    1-先找出相应的对象
    2-把这些涉及的对象的关系进行组网
2-/实例
    1-类:
        1-现实不存在--抽象的概念--人类--鸟类
        2-一类具有相同特征的事物的统称!
    2-类里面有
        1-静态---属性(特征)---变量
        2-动态---方法(行为)---函数
3-实例---也叫 对象
    1-在这个类里面实际存在的个体
    2-类是实例的抽象化概念
    3-实例是类的具体实例化体现      
4-
实例化操作:       
    1-
类里面的变量--属性
    2-类里面的函数--方法
    3-创建实例 t1 = Tiger()  
5-
静态属性和实例属性
    1-静态属性:
        1-也叫类属性
        2-它属于整个类的
        3-用法:1-.属性    2-实例.属性
    2-实例属性:
        1-这个属性是  那个实例的,不属于整个类---其他实例不能共享  
        2-
定义在 初始化方法 __init__
        3-一般在创建实例的时候就给定
        4-只要创建实例--def __init__(self):初始化方法肯定会调用
        5-self 只是代表词,并不是关键字--可以替换,但不建议替换!不能缺省
        6-id(self)
        7-
实例化属性---只能    实例.属性
        8- self 这个实例的本身
6-方法:
    1-静态方法
        1-属于整个类
        2-类可以直接调用,不需要实例化 ----.方法 / 实例.方法
        3- @staticmethod 修饰 只能修饰紧跟的那一个
    2-实例方法:
        1-self 
        2-
实例.方法
7-取随机数
    from random  import randint
    randint(0,2)--
0 1 2 闭区间
8-时间处理:
    1- import time
       time.time()---
单位是s 秒   从1970算起
9-继承
    1-继承关系可以是多个父类
    2-重写--在父类跟子类之间的一个多态的体现!
    3-在重写情况下,调用父类的方法
        super(SouTiger,s1).roar()
        super(
子类类名,子类的实例名).roar()
    4- __name   
私有属性
'''
'''

游戏分解:
    1- 找出涉及的对象:
        1- 房间
        2-
        3- 老虎
            1- 俗称:特征--专业术语--属性;本质:变量
                1- 胖瘦--*体重---实例属性
                2- 外貌
                3- 叫声--*
                4-
大小
                5- 年龄
                6- 统称
            2- 俗语:行为---专业术语:方法;本质是--函数
                1- ---*实例属性
                2-
                3-
                4- --*实例属性
    2- 组织关系
  
  
'''
'''
1-
属性:
    1- 静态属性--整个类的实例共有的
        1- 调用:
            实例
.属性
            类
.属性
    2- 实例属性:每一个实例都可以不一样---体重/名字
        1- 使用__init__(self)--初始化方法--构造方法
        2- 调用:
            1- 实例.属性
            2- .属性---不能
   

2-
方法:

'''
class Tiger:
   
className = '老虎'#属性---本质就是变量属于------静态()属性--这个类的实例共有
   
__height = 120#私有
   
def __init__(self,inWeight):#初始化方法-只要创建实例就一定会调用   t1---传给self
       
print('我被执行了',inWeight)
       
self.weight = inWeight
   
#实例方法--告诉体重
   
def tell_weight(self):
       
print('我的体重是{}'.format(self.weight))

   
#---形参带self---实例方法
   
def roar(self):
       
print('wow!---体重减5')
       
self.weight -= 5

   
#喂食
   
def feed(self,food):
        if
food ==
'':
           
self.weight += 10
           
print('喂食正确,体重增加10')
        else:
           
self.weight -= 10
           
print('喂食错误,体重减少10')

   
#静态方法---共有---没有self
   
@staticmethod#只能保紧跟着的一个
   
def static_roar():
       
print('父类的静态方法---wow!')



class
Sheep:
    pass

class
Room:
    def
__init__(self,inNum,inAnimal):
       
self.num = inNum
       
self.animal = inAnimal


#创建实例---t1--
# t1 = Tiger(100)
#
继承----功能扩展----减少代码的重编码--减少重复
class SouTiger(Tiger):
    def
__init__(self,inweight,inAge):
       
Tiger.
__init__(self,inweight)
       
self.age = inAge
   
@staticmethod#只能保紧跟着的一个
   
def static_roar():
       
print('子类的静态方法---wow!')



s1 =
SouTiger(150,20)
print(s1.weight)

s1.
static_roar()#直接调用是子类的
super(SouTiger,s1).static_roar()#调用父类的方法  super(子类的类名,子类的实例名).方法

Tiger.static_roar()
# print(s1.className)
# print(s1.age)
# print(s1.__height)

# # t1.roar()
# # t1.feed('
')
# # t1.tell_weight()
# #
# # Tiger.static_roar()
# # t1.static_roar()
#
#
# r1 = Room(1,t1)
#
# r1.animal.roar()
#
# #
随机数处理
# from random import randint
# print(randint(0,2))#
左右都包含
#
#
# roomList = []#10
个房间实例
# for num in range(1,11):
#     if randint(0,1) == 0:
#         ani = Tiger()
#     else:
#         ani = Sheep()
#     room = Room(num,ani)
#     roomList.append(room)
#
# namelist = ['tom','jack']
# print(namelist[randint(0,len(namelist)-1)])
#
#
# import time
# # print(time.time())#
单位是s 1970---至今
#
#
# startTime = time.time()
# while True:
#     curTime = time.time()
#     if curTime - startTime > 120:
#         break





# t2 = Tiger()
#
# t2.tell_weight()
# print(Tiger.weight)#
不能操作

# print(t1.className)
# t2 = Tiger()
# print(t2.className)
# print(Tiger.className)

 

 

扩展知识点多继承
# 多继承--方法重写--
class SouTiger(Tiger,Sheep):#华南虎---继承特点:便于扩展--提高效率--减少编码量
   
# def __init__(self):
    #     Tiger.__init__(self,inWeight=200)
   
@staticmethod
   
def static_roar():
       
print('子类的----叫方法')
    def
feed(self,food):
       
print('子类的实例方法-----')

#1- 调用指定父类静态方法
#父类类名.方法(子类的实例名)
Tiger.static_roar()
#2- 调用指定父类实例方法--Sheep
super(Tiger,s1).feed('')

resList = []#存储结果  [[类型1,大小1][类型2,大小2][类型3,大小3]]

resDict = {}#{'类型1':大小,'类型2':大小}
lines = log.split('\n')
del lines[
0],lines[-1]
for line in lines:
   
infoList = line.
split('\t')#list
   
fileType = infoList[0].split('.')[1].strip()
    fileSize =
int(infoList[1].strip())#转换类型
   
#2- 同类型统计---最简单方法----字典做!
   
if fileType not in resDict:#如果没改类型--新增
       
resDict[fileType] = fileSize

    else:
#累加
       
resDict[fileType] += fileSize




    inFlag = False
#默认不存在---需要进过遍历去核实该类型存不存在
   
#先查找--匹配看有没有该类型
   
for one in resList:#list
       
if fileType == one[0]:
           
one[
1] += fileSize #累加大小
           
inFlag = True#表示状态-----print('该类型存在')
           
break#匹配完成,后续不需要匹配


   
if inFlag == False:
       
resList.
append([fileType,fileSize])



print(resDict)
print(resList)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值