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

【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__
时间: 2024-12-26 06:18:44

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

【python学习笔记】6.抽象

[python学习笔记]6.抽象 创建函数: 使用def语句定义函数,不用声明参数类型,和返回值类型 def function_name(param1, param2): 'this is document' pass # fuction body return value # 可选 函数体的第一行字符串被用作文档字符串 callable(func): 用来判读func是否可以调用 help函数用来返回相关函数的文档 函数名可以作为变量赋值一个变量 位置参数:函数调用期间,参数按照参数列表中的顺

python基础教程_学习笔记9:抽象

抽象 懒惰即美德. 抽象和结构 抽象可以节省大量工作,实际上它的作用还要更大,它是使得计算机程序可以让人读懂的关键. 创建函数 函数可以调用(可能包含参数,也就是放在圆括号中的值),它执行某种行为并且返回一个值.一般来说,内建的callable函数可以用来判断函数是否可调用: >>> import math >>> y=1 >>> x=math.sqrt >>> callable(x) True >>> callab

python 学习笔记 14 -- 常用的时间模块之datetime

书接上文,前面我们讲到<常用的时间模块之time>,这次我们学习datetime -- 日期和时间值管理模块 使用apihelper 查看datetime 模块,我们可以看到简单的几项: date       ---  日期对象,结构为date(year, month, day) time       ---  时间值对象,结构为 time([hour[, minute[, second[, microsecond[, tzinfo]]]]]).时间对象所有的参数都是可选的.tzinfo 可以

Python学习笔记4(浅拷贝、深拷贝)

注:此博客搬运自http://www.cnblogs.com/Eva-J/p/5534037.html,有需要的朋友希望你们去原博客观看,给予原创更多的尊重. 注:我写一遍是为加深自己的印象,备查也方便,内容可能根据自己的情况有所删减,所以还是希望你们去原博客观看,谢谢~ 1.Python的变量及其存储形式 在Python学习笔记1中我们简单提到过变量这个概念,那么现在简单理解一下变量具体是如何存储数据的. Python采用了引用语义的方式存储变量,存储的内容只是这个变量的值所在的内存地址,而不

python学习笔记12-python面向对象

python学习笔记12-python面向对象 python一切皆对象 一.基本概念 1.面向对象和面向过程 面向对象编程:C++,Java,Python 面向过程编程:函数式编程,C程序等 2.类和对象 类:是对事物的抽象,比如:人类,球类 对象:是类的一个实例,比如:足球,篮球,对象就是对类的实例化 属性:五官,眼,鼻子,理解为一个变量,静态属性 方法:对人来说,吃穿住行,理解为一个函数,动态方法 实例说明:球类可以对球的特征和行为进行抽象,然后可以实例化一个真实的球实体出来 3.为什么要使

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

在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生成器(constructor). 一.迭代器(iterator) 在Python中,for循环可以用于Python中的任何类型,包括列表.元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器 迭代器是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前

Python学习笔记----序列共性

序列操作符 作用seq[ind] 获得下标为ind 的元素seq[ind1:ind2] 获得下标从ind1 到ind2 间的元素集合seq * expr 序列重复expr 次seq1 + seq2 连接序列seq1 和seq2obj in seq 判断obj 元素是否包含在seq 中 obj not in seq 判断obj 元素是否不包含在seq 中 1.连接符(+):将一个序列和另外一个相同的序列做连接 这种方式连接序列不是最快的, 对于字符串来说,不如将所有字符串放在一个列表或者可迭代对象

廖Python学习笔记一

1. 廖Python学习笔记 大的分类 如函数 用二级标题,下面的用三级 如输入输出 1.1.1. 输入输出 1.1.1.1. 输出 用 print() 在括号里加上字符串,就可以向屏幕上输出指定的文字print()函数可以接受多个字符串,用逗号(,)隔开,依次输出遇到逗号输出一个空格.如图 1.1.1.2. 输入 提供了一个input(),可以让用户输入字符串,并存放到一个变量里. name = input() print(name) 1.1.2. 变量 是初中数学所学的代数基础知识的使用.

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho