【python学习笔记】7.更加抽象

  • 类的定义就是执行代码块
  • 在内存保存一个原始实例,可以通过类名来访问
  • 类的实例化,是创建一个原始实例的副本, 并且所有成员变量与原始实例绑定
  • 通过修改实例变量,可以解除与原始实例的绑定
  • self表示当前实例的引用
  • 成员变量也称为特性
  • __bases__: 基类
  • __class__: 对象类型
  • __dict__: 所有特性
  • python的接口不用显式的制定对象必须包含哪些方法,只要对象符合当前接口就可以调用
  • 可以对象上通过赋值的方式,创建变量
#!/usr/bin/env python
# -*- coding: utf-8 -*- # 指定源码文件编码,python默认为ASCII __metaclass__ = type # 确定使用新式类 class Person:
def setName(self, name): # self 为是当前实例的引用
self.name = name
def getName(self):
return self.name
def greet(self):
print "hello, world! I'm %s." % self.name
def __inaccessible(self): # 私有函数,外界不可以访问
print "Bet you can't see me..."
def _inaccessible(self): # 不会被import导出
print "Bet you can't see me..." foo = Person() # 创建对象
bar = Person() foo.setName("foo")
bar.setName("bar") print foo.getName()
print bar.getName() foo.greet()
bar.greet() #foo.__inaccessible()
foo._inaccessible() print "------------------------" '''
''' class MemberCounter:
print "class MemberCounter begin defined"
members = 0
members2 = 0
def init(self):
MemberCounter.members += 1
MemberCounter.members2 += 1 m1 = MemberCounter()
m1.init()
m2 = MemberCounter()
m2.init() print "----"
print "m1.members", m1.members
print "m2.members", m2.members
print "MemberCounter.members", MemberCounter.members
print "----" print "modify m1.members"
m1.members='m1' print "----"
print "m1.members", m1.members
print "m2.members", m2.members
print "MemberCounter.members", MemberCounter.members
print "----" print "modify MemberCounter.members"
MemberCounter.members = "MemberCounter" print "----"
print "m1.members", m1.members
print "m2.members", m2.members
print "MemberCounter.members", MemberCounter.members
print "----" print "create m3"
m3=MemberCounter()
print "----"
print "m1.members", m1.members, "m1.members2", m1.members2
print "m2.members", m2.members, "m2.members2", m2.members2
print "m3.members", m3.members, "m3.members2", m3.members2
print "MemberCounter.members", MemberCounter.members, "MemberCounter.members2", MemberCounter.members2
print "----" print "modify MemberCounter.members2"
MemberCounter.members2= "members2" print "----"
print "m1.members", m1.members, "m1.members2", m1.members2
print "m2.members", m2.members, "m2.members2", m2.members2
print "m3.members", m3.members, "m3.members2", m3.members2
print "MemberCounter.members", MemberCounter.members, "MemberCounter.members2", MemberCounter.members2
print "----" m3.members2="m3.members2"
MemberCounter.members2= "members2 last" print "----"
print "m1.members", m1.members, "m1.members2", m1.members2
print "m2.members", m2.members, "m2.members2", m2.members2
print "m3.members", m3.members, "m3.members2", m3.members2
print "MemberCounter.members", MemberCounter.members, "MemberCounter.members2", MemberCounter.members2
print "----" '''
''' print "---------------------" class Filter:
def init(self):
self.blocked = [] # 创建成员变量
def filter(self, sequence):
return [x for x in sequence if x not in self.blocked] class SPAMFilter(Filter): # 继承,可以是逗号分隔的多个基类
def init(self): # 重载
self.blocked = ['SPAM'] f = Filter()
f.init()
print f.filter([1,2,3]) s = SPAMFilter()
s.init()
print s.filter(["SPAM", "SPAM","SPAM","SPAM", "eggs", "bacom" ]) print "---------------------"
class C:
def dis(self):
self.c=1
print self.c c=C()
c.dis()
c.cc=3
print "c.cc", c.cc print "c.__dict__", c.__dict__
print "C.__dict__", C.__dict__ print "Filter.__dict__", Filter.__dict__
print "f.__dict__", f.__dict__
print "s.__dict__", s.__dict__ print "m1.__dict__", m1.__dict__
print "m2.__dict__", m2.__dict__
print "m3.__dict__", m3.__dict__
print "MemberCounter.__dict__", MemberCounter.__dict__

【python学习笔记】7.更加抽象的更多相关文章

  1. 【python学习笔记】6.抽象

    [python学习笔记]6.抽象 创建函数: 使用def语句定义函数,不用声明参数类型,和返回值类型 def function_name(param1, param2): 'this is docum ...

  2. python学习笔记(五)、抽象

    不知不觉已经快毕业一年了,想想2018年过的可真舒适!!!社会就像一锅水,不同地方温度不同,2018年的我就身处温水中,没有一丝想要进取之心. 1 抽象 抽象在程序中可谓是神来之笔,辣么什么是抽象呢? ...

  3. python学习笔记之五:抽象

    本文会介绍如何将语句组织成函数,还会详细介绍参数和作用域的概念,以及递归的概念及其在程序中的用途. 一. 创建函数 函数是可以调用,它执行某种行为并且返回一个值.用def语句即可定义一个函数:(并非所 ...

  4. python学习笔记4_类和更抽象

    python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...

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

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

  6. Deep learning with Python 学习笔记(10)

    生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...

  7. Deep learning with Python 学习笔记(4)

    本节讲卷积神经网络的可视化 三种方法 可视化卷积神经网络的中间输出(中间激活) 有助于理解卷积神经网络连续的层如何对输入进行变换,也有助于初步了解卷积神经网络每个过滤器的含义 可视化卷积神经网络的过滤 ...

  8. Deep learning with Python 学习笔记(3)

    本节介绍基于Keras的使用预训练模型方法 想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络.预训练网络(pretrained network)是一个保存好的网络,之前已在 ...

  9. Deep learning with Python 学习笔记(2)

    本节介绍基于Keras的CNN 卷积神经网络接收形状为 (image_height, image_width, image_channels)的输入张量(不包括批量维度),宽度和高度两个维度的尺寸通常 ...

随机推荐

  1. LNMP搭建环境遇到的N多坑

    最近配置开发用的lnmp环境,环境配置完成后,爆500错误,查看nginx错误日志 open_basedir 将 PHP 所能打开的文件限制在指定的目录树,包括文件本身 错误日志显示,访问脚本不在 o ...

  2. 使用Vue和thrift建立前后端交互的demo

    初识thrift thrift 是 facebook 于2007年开发的一款跨平台 RPC(Remote Procedure Call) 软件框架, 它可以在多种平台上进行无缝交互,数据传输使用二进制 ...

  3. Java架构工程师知识图,你都知道么?

    1.工程化专题 (团队大于3个人之后,你需要去考虑团队合作,科学管理)  2.源码分析专题 (好的程序员,一行代码一个设计就能看出来,源码分析带你品味代码,感受架构)  大家可以点击加入群:69757 ...

  4. Java三大特性(封装,继承,多态)

    Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...

  5. PAT1117. Eddington Number

    思路:搞懂题意是关键–E满足有共有E天骑车的距离超过E米,求最大的E! 将数组排序,我们假设最大的E是e,e满足条件有e天骑车超过e米,并且e+1不满足有e+1天骑车超过e+1米.那么我们可以逆序统计 ...

  6. Web/app端自动化测试对比

    Web/app端自动化测试 做了一段时间的Android自动化测试,对比个人之前做的web端自动化测试,有一些感想.(由于个人接触的时间也不是太久,很多东西理解也并不深刻,先写下菜鸟时期的感想.) 区 ...

  7. 理解OAuth2.0认证

    一.什么是OAuth协议 OAuth 协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是 OAuth的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方 ...

  8. C语言老司机学Python (一)

    Python 版本:3.6.4 参考网上教程:http://www.runoob.com/python3/python3-basic-syntax.html 开始了啊. 干咱们这行的老规矩,学新语言的 ...

  9. IDirectDraw接口

    创建一个主DirectDraw对象,并使用QueryInterface()方法来得到最新的IDirectDraw7接口,或是直接用DirectDrawCreateEx()函数直接创建一个DirectD ...

  10. windows下python3.4安装lxml提示"Unable to find vcvarsall.bat"

    "https://pypi.python.org/pypi/lxml/3.6.0"从这个网址直接下载对应的lxml包,exe格式的,直接安装,问题解决!