Python 学习笔记(十四)Python类(二)
创建简单的类
新式类和经典类(旧式类)
Python 2.x中默认都是经典类,只有显式继承了object才是新式类
Python 3.x中默认都是新式类,经典类被移除,不必显式的继承object
新式类都从object继承,经典类不需要
新式类的MRO(method resolution order 基类搜索顺序)算法采用C3算法广度优先搜索,而旧式类的MRO算法是采用深度优先搜索
新式类相同父类只执行一次构造函数,经典类重复执行多次
截止到python2.1,只存在旧式类。旧式类中,类名和type是无关的:如果x是一个旧式类,那么x.__class__定义了x的类名,但是type(x)总是返回<type 'instance'>。这反映了所有的旧式类的实例是通过一个单一的叫做instance的内建类型来实现的,这是它和类不同的地方。
新式类是在python2.2为了统一类和实例引入的。一个新式类只能由用户自定义。如果x是一个新式类的实例,那么type(x)和x.__class__是一样的结果(尽管这不能得到保证,因为新式类的实例的 __class__方法是允许被用户覆盖的)。
>>> class AA: #经典类(旧式类)
pass >>> aa =AA()
>>> type(aa)
<type 'instance'>
>>> type(AA)
<type 'classobj'>
>>> aa.__class__
<class __main__.AA at 0x000000000396E348>
>>> class BB(object): #新式类
pass >>> bb = BB()
>>> type(bb)
<class '__main__.BB'>
>>> bb.__class__
<class '__main__.BB'>
>>> print aa
<__main__.AA instance at 0x000000000390ECC8>
>>> print bb
<__main__.BB object at 0x0000000002B00B00>
>>>
编写方法
示例1:
#! /usr/bin/env python
# coding =utf-8 #通常类名首字母大写 class Person(object):
h =1.8 #属性
def getName(self): #定义一个方法,第一个参数必须是self,而且必须写上,self是类的实例,而非类
print "My name is lily." def color(self,col):
print "The sky is {0}".format(col) p = Person() #把类实例化,p就是实例对象
p.getName() #调用实例里面的方法或者属性
p.color("blue")
print p.h p.a="hello" #给对象赋了一个属性
print p.a p.h =2.8
print p.h
示例2:
#!/usr/bin/env python
#coding=utf-8 """
地址的类PersonAddress
属性 人员的姓名| 人员的EMAIL
方法 访问每个属性|修改email地址
""" class PersonAddress(object): name ="zhangsan"
email="zhangsan@gmail.com" def aboutPerson(self): #self必须写上
print "NAME:",PersonAddress.name #访问属性
print "EMAIL:",PersonAddress.email def changeEmail(self,email):
PersonAddress.email =email p = PersonAddress()
p.aboutPerson()
p.changeEmail("cc@gamail.com")
p.aboutPerson()
类和实例
Python 学习笔记(十四)Python类(二)的更多相关文章
- python学习笔记(十四)python实现发邮件
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart u ...
- python cookbook第三版学习笔记十四:类和对象(五)代理类以及内存回收
代理类: 代理类的作用其实有继承有些类似,如果你想将某个实例的属性访问代理到内部另外一个实例中去,可以用继承也可以用代理.来看下代理的应用: class A: def spam(self,x) ...
- python 学习笔记十四 jQuery案例详解(进阶篇)
1.选择器和筛选器 案例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- python学习笔记(十 四)、web.py
使用web.py 通过python进行网页的编写,下面我们来简单了解一哈web.py 的使用 1 url处理 使用特定的url结构来解析我们发送的请求.如下面所示: urls = ( '/login' ...
- Python学习第十四篇——类初步使用及面向对象思想
class Restaurant(): def __init__(self,restaurant_name,cuisine_type): self.name = restaurant_name sel ...
- python学习笔记十四:wxPython Demo
一.简介 wxPython是Python语言的一套优秀的GUI图形库,允许Python程序员很方便的创建完整的.功能键全的GUI用户界面. wxPython是作为优秀的跨平台GUI库wxWidgets ...
- python学习笔记(十四): unittest
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 在说unittest之前,先说几个概念: TestC ...
- python 学习笔记(十四)有依赖关系的接口开发
接口开发中存在很多有依赖关系的接口,例如:BBS中发帖的时候就需要进行校验用户是否登录,那么此时发帖的接口就与用户登录接口有依赖关系.在发帖时就需要先获取用户的session,与当前登录用户进行校验对 ...
- Python学习笔记整理(四)Python中的字符串..
字符串是一个有序的字符集合,用于存储和表现基于文本的信息. 常见的字符串常量和表达式 T1=‘’ 空字符串 T2="diege's" 双引号 T3=""&quo ...
- python学习笔记(十六)-Python多线程多进程
一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
随机推荐
- 原型链继承中的prototype、__proto__和constructor的关系
前不久写了有关原型链中prototype.__proto__和constructor的关系的理解,这篇文章说说在原型链继承中的prototype.__proto__和constructor的关系. 通 ...
- js中常用的算法排序
在工作中都会经常用到的一些基础算法,可以很快解决问题.这些都是在工作中总结的,希望可以帮助到大家. 一.数组乱序 arr.sort(function randomsort(a, b) { return ...
- 【python爬虫】 之 爬取百度首页
刚开始学习爬虫,照着教程手打了一遍,还是蛮有成就感的.使用版本:python2.7 注意:python2的默认编码是ASCII编码而python3默认编码是utf-8 import urllib2 u ...
- Java设计模式—解释器模式&迭代器模式简介
解释器模式在实际的系统开发中使用得非常少,因为它会引起效率.性能以及维护等问题,一般在大中型的框架型项目能够找到它的身影,如一些数据分析工具.报表设计工具.科学计算工具等,若你确实遇到" ...
- kali 的端口扫描nmap
输入“nmap+空格+“-O”+空格+IP地址或域名. 扫描所有TCP端口:输入“nmap+空格+“-sT”+空格+IP地址或域名” 扫描所有开放的UDP端口:输入“nmap+空格+”-sP”+空格+ ...
- 一键清理 Nexus 中无用的 Docker 镜像
现许多团队使用 Nexus 来管理 Docker 镜像,产品不断迭代,镜像仓库占用的磁盘空间也越来越大.由于 Nexus 的控制台并未提供批量操作镜像功能,清理镜像十分不便.本文分享一个清理 Nexu ...
- 使用PermissionsDispatcher轻松解决Android权限问题
之前也处理过6.0后的权限问题,直接处理很是麻烦.这次在github上搜到了关于权限星数最多的PermissionsDispatcher这个库,几个注释完美解决权限问题. 第一步 添加各种注释 1.@ ...
- 爬虫day02
s10day112 内容回顾: 第一部分:爬虫相关 1. 谈谈你对http协议的理解? 规范: 1. Http请求收发数据的格式 GET /index/ http1.1/r/nhost:xxx.com ...
- 个人总结-9-session的使用,十天免登陆
昨天查看bootstrap,实现了登录和注册页面的重写. 今天准备加入session实现,十天免登陆等内容. 使用bootstrap直接套用标签页,以实现.
- linux系统PKWindows系统,从各方便分析linux和Windows的优劣
服务器系统linux系统和linux系统哪个好用,公说公有理婆说婆有理,今天鼎峰凡凡大概对Linux系统与Windows系统的优缺点PK!可以从以下几个方面来看 ①成本 赞成Linux的声音Linu ...