社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python(十四)阶段小结

Lonelyroots • 3 年前 • 357 次点击  

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

'''
类: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
 
357 次点击