【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. bzoj 3166 [Heoi2013]Alo 可持久化Trie

    3166: [Heoi2013]Alo Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1227  Solved: 569[Submit][Status ...

  2. 在 ASP.NET Core 项目中实现小写的路由URL

    在 ASP.NET MVC 早期版本中,我们可以通过在应用的 RegisterRoutes 方法中设置 routes.LowercaseUrls = true ; 来将页面的 URL 链接转小写.在 ...

  3. 解决mac 中的myeclipse控制台中文乱码问题

    http://www.myexception.cn/eclipse/1742588.html 解决 http://my.oschina.net/u/555006/blog/195013

  4. 浅谈session,cookie,sessionStorage,localStorage的区别及应用场景

    浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和session cookie和session都是用来跟踪浏览器 ...

  5. 《清华梦的粉碎》by王垠

     清华梦的诞生 小时候,妈妈给我一个梦.她指着一个大哥哥的照片对我说,这是爸爸的学生,他考上了清华大学,他是我们中学的骄傲.长大后,你也要进入清华大学读书,为我们家争光.我不知道清华是什么样子,但是我 ...

  6. 《Java编程思想》读书笔记

    前言 这个月一直没更新,就是一直在读这本<Java编程思想>,这本书可以在Java业界被传神的一本书,无论谁谈起这本书都说好,不管这个人是否真的读过这本书,都说啊,这本书很好.然后再看这边 ...

  7. python项目使用jsonschema进行参数校验

    python项目使用jsonschema进行参数校验 最近想要给一个新的openstack项目加上参数校验,过完年回来准备开工的时候,发现其他人已经在做了,对应的patch是:https://revi ...

  8. Hbase配置java客户端

    1.修改windows配置文件 C:\WINDOWS\system32\drivers\etc\hosts 将远程hbase和zookeeper主机的IP地址加进去 54.0.88.53      H ...

  9. 网络基础tcp/ip协议三

    数据链路层:(位于网络层与物理层之间) 数据链路层的功能: 数据链路的建立,维护. 帧包装,帧传输,帧同步. 帧的差错恢复. 流量的控制. 以太网:(工作在数据链路层) CSMA/CD(带冲突检测的载 ...

  10. dojo省份地市级联之省份封装类(一)

    省份封装类 Province.java /** * 省份封装类 */ package com.you.model; import java.io.Serializable; /** * @author ...