# ===============================封装====================================
# class Bar:
# def __init__(self,name,age,content):
# self.name = name
# self.age = age
# self.content = content
# def foo(self):
# print(self.name,self.age,self.content)
# b = Bar('Join','18','上大学')
# b.foo() # ================================继承===================================
# -------------------单继承---------------------
# class fa():
# def eat(self):
# print("father is eating")
# def sleep(self):
# print("father is sleeping")
# def sing(self):
# print("father is singging")
#
# class so(fa):
# def school(self):
# print("son is going to school")
# def eat(self):
# print("son is eating")
# def sing(self):
# print("son is singging")
# def sleep(self):
# super(so,self).sleep()
# print("son is sleeping")
# s = so()
# s.school()
# s.sleep()
# s.eat()
# s.sing() # --------------------多继承 -----------------------
# class f1:
# def a(self):
# print("f1.a")
# class f2:
# def a(self):
# print("f2.a")
# class son(f2,f1):
# def a(self):
# super(son,self).a()
# print("s.b")
# s = son()
# s.a()
# 多继承时:
# 左侧优先
# 一条道走到黑
# 同一个根时,最后再访问根
# class BaseRequest():
# def __init__(self):
# print("BaseRequest.init()")
# class RequestHandler(BaseRequest):
# def __init__(self):
# print("RequestHandler.init")
# BaseRequest.__init__(self)
# def server_forver(self):
# print('RequestHandler.server_forever')
# self.process_request()
# def process_request(self):
# print('RequestHandler.process_request')
# class Minx:
# def __init__(self):
# print("Minx.init")
# def process_request(self):
# print('minx.process_request')
# class Son(Minx,RequestHandler):
# def __init__(self):
# print("Son.init()")
# pass
# obj = Son()
# obj.server_forver() # class Bar():
# con = 'son' # 类静态字段 直接类名就可以调用
# def __init__(self,name):
# self.name = name # 普通对象,需要对象调用
# def p(self):
# print(self.name)
# @staticmethod # 相当于模块对函数的封装
# def stat():
# print("Im starticmethod") # 保存在类中,直接可通过类名调用
# @classmethod
# def classmethod(cls):
# #cls 是类名
# print(cls)
# print("classmethod")
# @property
# def per(self):
# return 1
# @per.setter
# def per(self,val):
# self.name = val
# @per.getter
# def per(self):
# return self.name
# @per.deleter
# def per(self):
# self.name = ''
# b = Bar('teacher')
# b.con = "father"
# print(b.con)
# print(b.name)
# Bar.stat()
# Bar.classmethod()
# print(b.name)
# b.per = 'sdfsfsdfj'
# print(b.per)
# del b.per
# print(b.name) # 分页列表 # class Page:
# def __init__(self,val):
# try:
# page = int(val)
# except Exception as e:
# page = 1
# self.val = page
# @property
# def start(self):
# start = (self.val-1) * 10
# return start
# @property
# def end(self):
# end = self.val * 10
# return end
#
# li = []
# for i in range(1000):
# li.append(i)
#
# while True:
# ipt = input("请输入要查看的Page:")
# page = Page(ipt)
# print(li[page.start:page.end]) # ================ 成员修饰符 ======================
# -------------共有成员 与 私有成员
# class foo:
# def __init__(self):
# self.__name = ''
# self.name = ''
# @property
# def per(self):
# print(self.name)
# @per.setter
# def per(self,name):
# self.__name = name
# @per.getter
# def per(self):
# return self.__name
# @per.deleter
# def per(self):
# self.__name = ''
# def pname(self):
# print(self.__name)
#
# f = foo()
# f.per = '123'
# print(f.per)
# print(f.pname())
# del f.per
# print(f.pname()) # =======================特殊成员=========================
# __init__ 类()自动执行
# __call__ 对象() 类()() 自动执行
# __int__ int(对象)
# __str__ str(对象)
# __add__ + 返回值可以自定义
# __del__ 析构函数 对象被销毁时自动执行
# __dict__ 对对象的成员封装成字典返回
# __doc__ 模块注释
# __getitem__ 过的列表的元素
# __setitem__ 设置值
# __delitem__ 删除值
# def __call__(self,*args,**kwargs):
# class foo:
# def __init__(self):
# print('Init')
# def __call__(self, *args, **kwargs):
# print('call')
# obj = foo()
# obj() # 自动触发__call__()方法
# foo()() # class foo:
# def __init__(self,n,a):
# self.n = n
# self.a = a
# def __str__(self):
# return '%s-%s' % (self.n,self.a)
# f = foo('alex','18')
# print(f) # class foo:
# def __init__(self,name,age):
# self.name = name
# self.age = age
# def __add__(self, other):
# return 'xxoo'
# obj1 = foo('alex',19)
# obj2 = foo('eirc',66)
# r = obj1+obj2
# # 俩对象相加时,自动执行第一个对象的 __add__方法,并且将第二个对象作为参数传入
# print(r,type(r)) # ================== MetaClass===============================
# 创建类的几种方法
# class foo(object):
# def func(self):
# print("第一种创建方式")
# obj = foo()
# obj.func()
# foo1 = type('foo1',(object,),{'func': lambda x: '第二种创建方式'})
# obj = foo1()
# obj.func() # class MyType(type):
# def __init__(self,what,bases=None,dict=None):
# print("1 =======> MyType Init")
# super(MyType,self).__init__(what,bases,dict)
# # def __new__(cls, *args, **kwargs):
# # print("MyType New")
# def __call__(self, *args, **kwargs):
# print("2 =======> MyType Call")
# obj = self.__new__(self,*args, **kwargs)
# self.__init__(obj)
#
# class Foo(object,metaclass=MyType):
# def __init__(self):
# print("4 =======> Foo Init")
# def __new__(cls, *args, **kwargs):
# print("3 =======> Foo New")
# return object.__new__(cls, *args, **kwargs)
# # 第一阶段:解释器从上到下执行代码创建Foo类
# # 第二阶段:通过Foo类创建obj对象
# obj = Foo() # ======================异常捕获=========================
# def Foo(num):
# try:
# li = [1,2,3]
# print(li[num])
# if num > len(li):
# raise IndexError('现在已经有错误了')
# except IndexError as e:
# print('IndexError:',e)
# except ValueError as e:
# print('ValueError:',e)
# except Exception as e:
# print('Error:',e)
# else:
# print(li[:])
# finally:
# print(li)
# Foo(10) # ========================== 反射 ================================
# 通过字符串的形式操作对象成员
# class Foo:
# def __init__(self,name,age):
# self.name = name
# self.age = age
#
#
# obj = Foo('alex','18')
# obj.name
# b = 'name'
# print(obj.__dict__[b])
# ---------------------------------------
# getattr() 去什么里面获取什么东西
# setattr() 设置字段
# hasattr() 判断是否有字段
# delattr() 删除字段
# -------------------------------------------
# setattr(obj,'k1','v1')
# print(getattr(obj,b))
# print(getattr(obj,'k1'))
# delattr(obj,'k1')
# print(getattr(obj,'k1')) # ---------------------- 单例模式 ---------------------------
# class Foo:
# def __init__(self,name,age):
# self.name = name
# self.age = age
# def show(self):
# print(self.name,self.age)
# v = None
# while True:
# if v :
# v.show()
# else:
# v = Foo('alex',123)
# v.show()
# class  Foo:
# __v = None
# def __init__(self):
# print('对象被创建了')
# @classmethod
# def get_instatnce(cls):
# print('单例模式创建对象')
# if cls.__v:
# return cls.__v
# else:
# cls.__v = Foo()
# return cls.__v
# obj = Foo.get_instatnce()

最新文章

  1. Grunt上手指南<转>
  2. BZOJ3325 : [Scoi2013]密码
  3. 如何在腾讯云快速构建一个Wordpress个人站点
  4. iis提示“另一个程序正在使用此文件,进程无法访问。(异常来自HRESULT:0x80070020)
  5. ADF_ADF Faces系列4_ADF数据可视化组件简介之建立BarChart/Gauge/ExportExcel
  6. 三、Android NDK编程预备之Java jni入门创建C/C++共享库
  7. SoapUI Property
  8. Java中throws和throw的区别讲解
  9. 发布代码小助手V2.1发布了——Code2HTML工具
  10. 【AC自动机】专题总结
  11. android通用文件操作
  12. 使用gulp在开发过程中合理导出zip文件
  13. 模拟vector
  14. JSP中getParameter和getAttribute区别
  15. Fedora 19的U盘安装 以及简单配置
  16. endsWith is not a function解决方案
  17. 标准的Java编码规范手册
  18. 解决api 跨域 webconfig添加节点
  19. [HAOI 2006]受欢迎的牛
  20. 8天入门docker系列 —— 第一天 docker出现前的困惑和简单介绍

热门文章

  1. Windows 文件自动同步共享工具
  2. Codeforces Round #447
  3. BZOJ2134: 单选错位(期望乱搞)
  4. spring之pom.xml配置
  5. Django rest_framework API 随笔
  6. [翻译]内存一致性模型 --- memory consistency model
  7. 配置DCOM中excel权限
  8. 4 Python+Selenium的元素定位方法(link/partial link)
  9. TortoiseSvn问题研究(一)
  10. 我的C++笔记(语句基本结构)