# ===============================封装====================================
# 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()

Python学习历程之面对对象浅识的更多相关文章

  1. 【Python学习笔记之二】浅谈Python的yield用法

    在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生 ...

  2. Python学习笔记之类与对象

    这篇文章介绍有关 Python 类中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中类的使用技巧 1.与类和对象相关的内置方法 issubclass(class, classinfo) ...

  3. python学习笔记4(对象/引用;多范式; 上下文管理器)

    ### Python的强大很大一部分原因在于,它提供有很多已经写好的,可以现成用的对象 21. 动态类型:对象/引用 对象和引用: 对象是储存在内存中的实体,对象名只是指向这一对象的引用(refere ...

  4. Python学习历程之模块浅识

    # =============================操作系统模块=======================# import os# 待续# ======================= ...

  5. 《转》python学习(4)对象

    转自http://www.cnblogs.com/BeginMan/p/3160044.html 一.学习目录 1.pyhton对象 2.python类型 3.类型操作符与内建函数 4.类型工厂函数 ...

  6. 记录我的 python 学习历程-Day05 字典/字典的嵌套

    一.字典的初识 为什么要有字典 字典与列表同属容器型数据类型,同样可以存储大量的数据,但是,列表的数据关联性不强,并且查询速度比较慢,只能按照顺序存储. 什么是字典 先说一下什么叫可变与不可变的数据类 ...

  7. 记录我的 python 学习历程-Day06 is id == / 代码块 / 集合 / 深浅拷贝

    一.is == id 用法 在Python中,id是内存地址, 你只要创建一个数据(对象)那么就会在内存中开辟一个空间,将这个数据临时加载到内存中,这个空间有一个唯一标识,就好比是身份证号,标识这个空 ...

  8. 记录我的 python 学习历程-Day13 匿名函数、内置函数 II、闭包

    一.匿名函数 以后面试或者工作中经常用匿名函数 lambda,也叫一句话函数. 课上练习: # 正常函数: def func(a, b): return a + b print(func(4, 6)) ...

  9. (Python学习4)List对象

    1.PyListObject对象 typedef struct { PyObject_VAR_HEAD PyObject **ob_item; Py_ssize_t allocated; } PyLi ...

随机推荐

  1. 使用Micrisoft.net设计方案 前言

    前言 主要阐述23种设计模式在Microsoft.Net中的使用,以及使用设计模式创建后的对象如何使用.同是向我们传达3个理念,分别是: 1.  使用设计模式可以让程序更加灵活 2.  结构越复杂,意 ...

  2. P1410 子序列

    题目描述 给定一个长度为N(N为偶数)的序列,问能否将其划分为两个长度为N/2的严格递增子序列, 输入输出格式 输入格式: 若干行,每行表示一组数据.对于每组数据,首先输入一个整数N,表示序列的长度. ...

  3. 11.javaweb国际化标签库

    一.国际化标签库 1,格式化标签库提供的标签 2,标签详解 2.1<fmt:setLocale>标签 下面设置不同的区域,并在设置的区域下显示日期 2.2<fmt:requestEn ...

  4. poj3083 Children of the Candy Corn 深搜+广搜

    这道题有深搜和广搜.深搜还有要求,靠左或靠右.下面以靠左为例,可以把简单分为上北,下南,左西,右东四个方向.向东就是横坐标i不变,纵坐标j加1(i与j其实就是下标).其他方向也可以这样确定.通过上一步 ...

  5. Django学习笔记----settings and database_based App demo

    原文参考docs.djangoproject.com, what can manage.py utility do? find here. 1.Database Setup 编辑settings.py ...

  6. UVa 1583 Digit Generator WA

    #include<stdio.h> int main() { long int n,i,s=0; while(scanf("%d",&n)!=EOF) { in ...

  7. sql语句参数化问题

    select  @PageSize * from tets SELECT 在WHERE 之前都不能参数化. TOP 只能做字符串运行.

  8. JS 公鸡2文一只、母鸡1文一只、小鸡0.5文一只若一共有100文钱买100只鸡有多少种方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. hibernate详细配置

    映射配置 <!-- 映射文件: 映射一个实体类对象:  描述一个对象最终实现可以直接保存对象数据到数据库中.  --> <!-- package: 要映射的对象所在的包(可选,如果不 ...

  10. eclipse中的maven项目部署到tomcat中

    http://www.cnblogs.com/guodefu909/p/4874549.html