Py学习  »  Python

Python(十四)阶段小结

Lonelyroots • 2 年前 • 228 次点击  

温故而知新,可以为师矣!又到了回顾知识的时间啦,让我带着大家来复习一下面向对象的知识点!

'''
类:class
'''
# class Person:
#     def __init__(self,name):    # 对象调用方法的时候,会自动把实例对象作为参数传给方法的第一个参数
#         # 属性
#         self.name = name
#
#     def play(self):
#         print(self.name)
#
# class Guangdong(Person):
#     # 重写
#     def play(self):
#         print("子类方法")
#         super().play()      # 可以同时使用两个play方法,子类的和父类的
#
# class Sichuan(Person):
#     pass
#
# class Hunxue(Guangdong,Sichuan):
#     pass
#
# bd = Person('bd')     # 通过__new__方法,创建实例对象,实例化的同时调用__init__
# bd.play()
#
# print(Guangdong.mro())
# print(Hunxue.mro())
# xb = Guangdong('小白')
# xb.play()
'''
定义一个账户类:可以创建账户、存款、取款、查询余额、以及销户等操作
'''
""""""
# class Account:
#     def __init__(self,name,pwd,money=0):
#         self.name = name
#         self.pwd = pwd
#         self.money = money
#
#     # 存款
#     def deposit(self,pwd,money):
#         if pwd != self.pwd:
#             print("密码错误")
#         else:
#             if isinstance(5,(float,int)) and money>1:
#                 self.money += money
#                 print("存款金额是{},目前现有余额{}".format(money,self.money))
#             else:
#                 print("请输入正确的金额")
#
#     # 取款
#     def draw(self,pwd,money):
#         if pwd != self.pwd:
#             print("密码错误")
#         else:
#             if isinstance(5,(float,int)) and money<=self.money :
#                 self.money -= money
#                 print("取款金额是{},目前现有余额{}".format(money,self.money))
#
#     # 查询
#     def query(self,pwd):
#         if pwd != self.pwd:
#             print("密码错误")
#         else:
#             print("目前现有余额是{}".format(self.money))
#
#     # 销户
#     def __del__(self):
#         pwd = int(input("请输入您的密码:"))
#         if pwd != self.pwd:
#             print("密码错误")
#         else:
#             while self.money:
#                 money = int(input("请输入取款金额:"))
#                 self.draw(pwd,money)
#             print('删除成功')
#
# bd = Account('bd',123,50)
'''面向对象高级'''
# class Person:
#     def __init__(self):
#         print("这是初始化函数")
#
#     # 重写
#     def __new__(cls):   # 创建实例对象
#         print("这是实例化方法")
#         # 继承父类的new方法,并返回实例对象
#         return super().__new__(cls)
#
#     def __repr__(self):
#         return 'bd'
#
# c = Person()       # 首先调用__new__方法
# print(c)
'''测试列表推导式和不用列表推导那一种更快'''
# import time
# class Number():
#     def __enter__(self):
#         # 获取开始时间
#         self.start = time.time()
#
#     def __exit__(self,exc_type,exc_val,exc_tb):
#         # 获取结束时间
#         self.end = time.time()
#         run_time = self.end-self.start
#         return run_time
# """
# 功能执行之前   先执行__enter__
# 功能
# 功能执行之后   后执行__exit__
# """
# with Number():
#     [i for i in range(10000)]
#
# with Number():
#     li = []
#     for i in range(10000):
#         li.append(i)
'''range不可以使用小数做步长,实现一个可迭代对象,可以实现小数步长'''
# import decimal
# class Frange:
#     def __init__(self,start,end = None,step = 1):
#         # 如果只有一个值传进来
#         if end == None:     # 证明只传进来了一个值
#             self.start = -step
#             self.end = start
#             self.step = step
#         # 如果是两个值
#         else:     # 证明传进来了不止一个值
#             self.start = start-step
#             self.end = end
#             self.step = step
#
#     def __iter__(self):
#         return self
#
#     def __next__(self):
#         self.start = decimal.Decimal(str(self.start))+decimal.Decimal(str(self.step))
#         if self.start >= self.end:
#             # 主动报错
#             raise StopIteration
#         else:
#             return self.start
#
# f = Frange(2,3)
# for i in f:
#     print(i)
'''序列协议'''
# class Index():
#     def __init__(self,*args):
#         # self.value是一个元组
#         self.value = args
#
#     def __len__(self):
#         return len(self.value)
#
#     # 元组取值
#     def __getitem__(self,key):
#         return self.value[key]
#
# li = [1,5,7,9]
# for i,s in enumerate(li):
#     print(i,s)
'''迭代器协议'''
# li = [1,5,7,9]
# f=li.__iter__()
# print(next(f))
# print(next(f))
# print(next(f))
# print(next(f))


# class Number:
#     def __init__(self,end=10,step=1):
#         self.start = -1
#         self.end = end
#         self.step = step
# 
#     # 返回可迭代对象
#     def __iter__(self):
#         return self
# 
#     def __next__(self):
#         self.start += self.step
#         if self.start >= self.end:
#             raise StopIteration
#         return self.start
# 
# for i in Number():
#     print(i)
'''
私有属性(不可以直接调用,需要通过方法调用):
设置初始值、修改、使用相当于__init__()构造函数
'''
# class MyName:
#     __name = '陈宏'
# 
#     def set(self,name):
#         """在这里修改赋值"""
#         self.__name = name
# 
#     def get(self):
#         # 在这里返回值,若修改就是name,没修改就是上方初始值:"陈宏"
#         return self.__name
# 
# a = MyName()
# a.set('bd')
# print(a.get())

文章到这里就结束了!希望大家能多多支持Python(系列)!六个月带大家学会Python,私聊我,可以问关于本文章的问题!以后每天都会发布新的文章,喜欢的点点关注!一个陪伴你学习Python的新青年!不管多忙都会更新下去!一起加油!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/121493
 
228 次点击