创建简单的类

新式类和经典类(旧式类)

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类(二)的更多相关文章

  1. python学习笔记(十四)python实现发邮件

    import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart u ...

  2. python cookbook第三版学习笔记十四:类和对象(五)代理类以及内存回收

    代理类: 代理类的作用其实有继承有些类似,如果你想将某个实例的属性访问代理到内部另外一个实例中去,可以用继承也可以用代理.来看下代理的应用: class A:     def spam(self,x) ...

  3. python 学习笔记十四 jQuery案例详解(进阶篇)

    1.选择器和筛选器 案例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  4. python学习笔记(十 四)、web.py

    使用web.py 通过python进行网页的编写,下面我们来简单了解一哈web.py 的使用 1 url处理 使用特定的url结构来解析我们发送的请求.如下面所示: urls = ( '/login' ...

  5. Python学习第十四篇——类初步使用及面向对象思想

    class Restaurant(): def __init__(self,restaurant_name,cuisine_type): self.name = restaurant_name sel ...

  6. python学习笔记十四:wxPython Demo

    一.简介 wxPython是Python语言的一套优秀的GUI图形库,允许Python程序员很方便的创建完整的.功能键全的GUI用户界面. wxPython是作为优秀的跨平台GUI库wxWidgets ...

  7. python学习笔记(十四): unittest

    Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 在说unittest之前,先说几个概念: TestC ...

  8. python 学习笔记(十四)有依赖关系的接口开发

    接口开发中存在很多有依赖关系的接口,例如:BBS中发帖的时候就需要进行校验用户是否登录,那么此时发帖的接口就与用户登录接口有依赖关系.在发帖时就需要先获取用户的session,与当前登录用户进行校验对 ...

  9. Python学习笔记整理(四)Python中的字符串..

    字符串是一个有序的字符集合,用于存储和表现基于文本的信息. 常见的字符串常量和表达式 T1=‘’ 空字符串 T2="diege's" 双引号 T3=""&quo ...

  10. python学习笔记(十六)-Python多线程多进程

    一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...

随机推荐

  1. 精选10款HTML5手机模板

    1.Stroller | Mobile & Tablet Responsive Template 演示地址   购买地址 2.Ocean Mobile Template 演示地址   购买地址 ...

  2. drupal7 STMP邮件模块配置

    drupal7.54 STMP  version = "7.x-1.6" 配置:   注意:上面的“用户名”需要和“站点信息”页面的电子邮件地址保持一致,邮件发送才能成功 ---- ...

  3. react项目 路径优化

  4. WinForm实现Rabbitmq官网6个案例-RPC

    获取源码 客户端代码: namespace RabbitMQDemo { public partial class RPC : Form { private readonly static RPC _ ...

  5. Python删除开头空格

    # -*- coding: utf-8 -*- '''打开delSpace.txt文本并删除每行开头的八个空格''' f=open("delSpace.txt") lines=f. ...

  6. 使用PuTTy在CentOS下安装web.py与简单的文件传输

    两周前,出于帮朋友忙的目的,尝试了一下微信公众号的菜单自定义与自动回复功能的实现,成了. 两周后,需要将代码转移至朋友新购的服务器上,发现基本操作全忘记了,麻瓜!所以记一笔,希望也能对大家也有帮助. ...

  7. VS2013中使用Git建立源代码管理

    原文:http://blog.csdn.net/bodybo/article/details/38976549/ 第一次在VS2013中使用Git,也是第一次使用git,各种不熟悉.百度各种使用经验, ...

  8. 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)

    问题描述: 有时候使用 apt-get 终端提示这样的错误信息: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/ ...

  9. JS的排序算法

    排序是最基本的算法(本文排序为升序Ascending),常见的有以下几种: 1.冒泡排序 Bubble Sort 2.选择排序 Selection Sort 3.插入排序 Insertion Sort ...

  10. forkjoin框架疑问记录

    今天在看jdk1.7的forkjoin框架时候,里面有个例子如下: product类: public class Product { private String name; private doub ...