温故而知新,可以为师矣!又到了回顾知识的时间啦,让我带着大家来复习一下面向对象的知识点!
'''
类: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的新青年!不管多忙都会更新下去!一起加油!