内置方法 说明

__init__(self,...) 初始化对象,在创建新对象时调用

__del__(self) 释放对象,在对象被删除之前调用

__new__(cls,*args,**kwd) 实例的生成操作

__str__(self) 在使用print语句时被调用

__getitem__(self,key) 获取序列的索引key对应的值,等价于seq[key]

__len__(self) 在调用内联函数len()时被调用

__cmp__(stc,dst) 比较两个对象src和dst

__getattr__(s,name) 获取属性的值

__setattr__(s,name,value) 设置属性的值

__delattr__(s,name) 删除name属性

__getattribute__() __getattribute__()功能与__getattr__()类似

__gt__(self,other) 判断self对象是否大于other对象

__lt__(slef,other) 判断self对象是否小于other对象

__ge__(slef,other) 判断self对象是否大于或者等于other对象

__le__(slef,other) 判断self对象是否小于或者等于other对象

__eq__(slef,other) 判断self对象是否等于other对象

__call__(self,*args) 把实例对象作为函数调用

__init__():

__init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的初始化。注意,这个名称的开始和结尾都是双下划线。

代码例子:

#!/usr/bin/python

# Filename: class_init.py

class Person:

def __init__(self, name):

self.name = name

def sayHi(self):

print 'Hello, my name is', self.name

p = Person('Swaroop')

p.sayHi()

输出:

Hello, my name is Swaroop

说明:__init__方法定义为取一个参数name(以及普通的参数self)。在这个__init__里,我们只是创建一个新的域,也称为name。注意它们是两个不同的变量,尽管它们有相同的名字。点号使我们能够区分它们。最重要的是,我们没有专门调用__init__方法,只是在创建一个类的新实例的时候,把参数包括在圆括号内跟在类名后面,从而传递给__init__方法。这是这种方法的重要之处。现在,我们能够在我们的方法中使用self.name域。这在sayHi方法中得到了验证。

__new__():

__new__()在__init__()之前被调用,用于生成实例对象.利用这个方法和类属性的特性可以实现设计模式中的单例模式.单例模式是指创建唯一对象吗,单例模式设计的类只能实例化一个对象.

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class Singleton(object):

__instance = None # 定义实例

def __init__(self):

pass

def __new__(cls, *args, **kwd): # 在__init__之前调用

if Singleton.__instance is None: # 生成唯一实例

Singleton.__instance = object.__new__(cls, *args, **kwd)

return Singleton.__instance

__getattr__()、__setattr__()和__getattribute__():

当读取对象的某个属性时,python会自动调用__getattr__()方法.例如,fruit.color将转换为fruit.__getattr__(color).当使用赋值语句对属性进行设置时,python会自动调用__setattr__()方法.__getattribute__()的功能与__getattr__()类似,用于获取属性的值.但是__getattribute__()能提供更好的控制,代码更健壮.注意,python中并不存在__setattribute__()方法.

代码例子:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class Fruit(object):

def __init__(self, color = "red", price = 0):

self.__color = color

self.__price = price

def __getattribute__(self, name): # 获取属性的方法

return object.__getattribute__(self, name)

def __setattr__(self, name, value):

self.__dict__[name] = value

if __name__ == "__main__":

fruit = Fruit("blue", 10)

print fruit.__dict__.get("_Fruit__color") # 获取color属性

fruit.__dict__["_Fruit__price"] = 5

print fruit.__dict__.get("_Fruit__price") # 获取price属性

__getitem__():

如果类把某个属性定义为序列,可以使用__getitem__()输出序列属性中的某个元素.假设水果店中销售多钟水果,可以通过__getitem__()方法获取水果店中的没种水果

代码例子:

#!/usr/bin/python

# -*- coding: UTF-8 -*-class FruitShop:

def __getitem__(self, i): # 获取水果店的水果

return self.fruits[i]

if __name__ == "__main__":

shop = FruitShop()

shop.fruits = ["apple", "banana"]

print shop[1]

for item in shop: # 输出水果店的水果

print item,

输出为:

banana

apple banana

__str__():

__str__()用于表示对象代表的含义,返回一个字符串.实现了__str__()方法后,可以直接使用print语句输出对象,也可以通过函数str()触发__str__()的执行.这样就把对象和字符串关联起来,便于某些程序的实现,可以用这个字符串来表示某个类

代码例子:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class Fruit:

'''Fruit类''' #为Fruit类定义了文档字符串

def __str__(self): # 定义对象的字符串表示

return self.__doc__

if __name__ == "__main__":

fruit = Fruit()

print str(fruit) # 调用内置函数str()出发__str__()方法,输出结果为:Fruit类

print fruit #直接输出对象fruit,返回__str__()方法的值,输出结果为:Fruit类

__call__():

在类中实现__call__()方法,可以在对象创建时直接返回__call__()的内容.使用该方法可以模拟静态方法

代码例子:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class Fruit:

class Growth: # 内部类

def __call__(self):

print "grow ..."

grow = Growth() # 调用Growth(),此时将类Growth作为函数返回,即为外部类Fruit定义方法grow(),grow()将执行__call__()内的代码

if __name__ == '__main__':

fruit = Fruit()

fruit.grow() # 输出结果:grow ...

Fruit.grow() # 输出结果:grow ...

python1000个常用代码-介绍Python中几个常用的类方法相关推荐

  1. python常用命令汇总-python中pip工具常用命令汇总

    1.查看python解释器的版本 python --version 2.查看pip的版本 pip --version pip show pip 3.查看pip的帮助 pip --help 4.查看py ...

  2. python中len用法_简单介绍Python中的len()函数的使用

    简单介绍Python中的len()函数的使用 函数:len() 1:作用:返回字符串.列表.字典.元组等长度 2:语法:len(str) 3:参数:str:要计算的字符串.列表.字典.元组等 4:返回 ...

  3. python中稀疏矩阵的常用表示COO LIL CSR CSC【上篇】

    前言 sklearn调用独热编码函数encoder.fit_transform()返回的是scipy.sparse._csr.csr_matrix类型. torch的tensor也是一种matrix, ...

  4. 介绍Python中的__future__模块

    这篇文章主要介绍了介绍Python中的__future__模块,__future__模块使得在Python2.x的版本下能够兼容更多的Python3.x的特性,需要的朋友可以参考下 Python的每个 ...

  5. python中整型_实例介绍Python中整型

    实例介绍Python中整型 Python中有以下几个基本的数据类型: 整数 int 字符串 str 浮点数 float 集合 set 列表 list 元组 tuple 字典 dict 布尔类型 boo ...

  6. 介绍python中几种遍历列表的for循环方法

    我们在使用列表的过程中,经常需要遍历列表的所有元素,对每个元素执行相同的操作.今天就给大家介绍python中几种遍历列表的for循环方法. 首先我们先构造一个numbers列表,如下: numbers ...

  7. python or的用法_详细介绍Python中and和or实际用法

    and 和 or 的特殊性质 在Python 中,and 和 or 执行布尔逻辑演算,但是它们并不返回布尔值:而是,返回它们实际进行比较的值之一.下面来看一下实例.>>> 'a' a ...

  8. python有哪几种基本数据类型_Python最基本的数据类型以及对元组的介绍 Python 中列表和元组有哪些区别...

    python的数据类型有哪些?道不同不相为谋,你讨厌我,我也未必喜欢你.各走各的人岂不是更潇洒何必咄咄逼人费了口舌也讨人嫌.你闲得慌,我可没空陪你. 1. 数字类型 Python数字类型主要包括int ...

  9. python中运算符优先级_介绍python中运算符优先级

    原标题:介绍python中运算符优先级 下面这个表给出Python的运算符优先级,从最低的优先级(最松散地结合)到最高的优先级(最紧密地结合).这意味着在一个表达式中,Python会首先计算表中较下面 ...

最新文章

  1. Archlinux里面安装VMware Tools
  2. 聚合函数的计算机控件,使用Kendo UI MVC Grid包装器的聚合函数
  3. myeclipse安装svn插件
  4. 火爆网络的《神经网络与深度学习》,有人把它翻译成了中文版!
  5. Durid数据库连接池设置ConnectionInitSqls参数解决数据库设置编码utf8mb4
  6. 前端学习(2693):重读vue电商网站14之步骤条的使用与美化
  7. 使用栈来完成一个表达式的结果
  8. 下标要求数组或指针类型_算法一看就懂之「 数组与链表 」
  9. Apache HTTP服务器 2.0版本文档
  10. Python爬虫怎么学?面向招聘岗位职责学习,看看你的技术能拿多少薪资
  11. Java常量什么时候被回收,JVM GC调优(2)-GC算法判定对象可以被回收(部分摘自深入理解Java虚拟机) - Java 技术驿站-Java 技术驿站...
  12. 手游开发之lua的class函数详解
  13. 2021爱分析·中国人工智能应用趋势报告——新基建助推,人工智能应用迈入新阶段
  14. 怎么删除feed php,怎样关闭或删除WordPress程序默认的RSS feed功能
  15. 机器学习苹果识别——python+opencv实现物体特征提取
  16. 语音增强 理论与实践 pdf_初中英语语音教学策略研究 (结题报告)
  17. 我的第二个独立开发的邮箱类App—“简邮”(支持QQ、雅虎、阿里云、Outlook)
  18. UDF、UDTF、UDAF自定义函数
  19. 手写迷你版HashMap
  20. Java FlowLayout(流式布局)布局管理器

热门文章

  1. Solr中Field常用属性
  2. [Java拾遗四]JavaWeb基础之Servlet_RequestResponse
  3. JQuery.validate中文API
  4. 摆脱阅读黑洞,退订RSS
  5. 用户界面设计的技巧与技术 (作者Scott W.Ambler)
  6. HTML基础之CSS
  7. [AngularJS] “多重路由”嵌套模块——AngularJS“路由”嵌套学习资料教程
  8. (笔记)Mysql命令select from:查询表中的数据(记录)
  9. js如何打印object对象
  10. myeclipse10.7安装git插件