python中urframe函数的用法_python类中的内置函数

__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 ...

内置方法

说明

__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)

把实例对象作为函数调用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop中RPC机制

Hadoop中RPC机制 RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。Hadoop底层的交互都是通过rpc进行的。例如:datanode和namenode 、tasktracker和jobtra…

C++中如何读取一个数的位数_求1000以内的水仙花数

点击上方 蓝字关注我们大家好,我是阿汤哥。看知乎上有朋友说还不明白怎么判断水仙花数,今天我们就来看看这个问题。(PS:“求1000以内的水仙花数”这道题阿汤哥记忆犹新。到现在还记得这是我大一上学期期末考试的编程题。)怎么求水仙花数&…

[html] link标签的属性media有哪些值?都有什么作用?

[html] link标签的属性media有哪些值?都有什么作用? 根据w3c的介绍,media属性表示link的链接文档会应用于何种媒介(设备)上。用于为不同的媒介类型规定不同的样式。常用的值为screen(计算机屏幕,默认), pr…

双向绑定v-bind

通过v-model绑定输出数据<script> export default {data(){return {pagestyle:https://v4.bootcss.com/docs/4.3/dist/css/bootstrap.css,pagecss:https://v4.bootcss.com/docs/4.3/examples/sticky-footer-navbar/sticky-footer-navbar.css,mytitle:v-bind bootstrap样…

python函数复用_【python学习-4】可复用函数与模块

1、自定义函数自定义函数格式如下&#xff1a;def (参数列表):return#!/usr/bin/python#定义函数&#xff0c;打印数字1~5defprintNum5():#range函数&#xff0c;生成列表集合&#xff0c;有3个入参&#xff1a;start(可选&#xff0c;起始数)&#xff0c;stop(终止数&#xff…

(todo)数组名 有存储空间吗?

转与csdn 对于数组b[]&#xff0c;b是数组的地址&#xff0c;但b不算变量&#xff0c;有没有一个地方存放b&#xff1f;而且b是不 是存放的就是自己所在的地址。 ------------------------------------------------------------- 数组名不是对象&#xff0c;数组才是对象&am…

[html] 实现一个居中半透明的模态窗

[html] 实现一个居中半透明的模态窗 .modal{ width: 400px; height: 250px; position: absolute; top: 50%; left: 50%; background: rgba(0,0,0,.5); transform: translateX(-50%) translateY(-50%); }个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容…

xyz坐标图_“色觉地图”的建立(二):辐照度与亮度、rgb空间、“颜色图”的混色方式...

上篇““色觉地图”的建立&#xff08;一&#xff09;&#xff1a;光感受器、色匹配实验与CIE RGB坐标系“中说到&#xff0c;人的色觉是线性的&#xff0c;我们可以用叠加原理“混色”——这意味着色觉的空间固定不变&#xff0c;我们可以任意选择一组基底&#xff08;或说坐标…

Nginx的应用之动静分离

Nginx 的动静分离 我们通过中间件将动态请求和静态请求进行分离&#xff0c;减少了不必要的请求消耗和延时。 动静分离后&#xff0c;即使动态服务不可用&#xff0c;但静态资源不会受到影响。 应用实例 1、准备环境 系统角色主机名IP服务CentOS 7.2反向代理Nginx_Proxy192.168…

[html] 说说你对网格布局的理解

[html] 说说你对网格布局的理解 目前是最强大的布局方案&#xff0c;但兼容性差个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

【SQLSERVER】SQL SERVER 2008筛选表报错

【SQLSERVER】SQL SERVER 2008筛选表报错 错误详细&#xff1a;标题: Microsoft SQL Server Management Studio------------------------------无法为该请求检索数据。 (Microsoft.SqlServer.Management.Sdk.Sfc)有关帮助信息&#xff0c;请单击: http://go.microsoft.com/fwli…

安装ipython失败 in error catcher_疯狂的Python:零基础小白入门帖子详情 - 网易云课堂...

C:\Users\David>pip install IpythonCollecting IpythonUsing cached ipython-6.1.0-py3-none-any.whlCollecting pygments (from Ipython)Downloading Pygments-2.2.0-py2.py3-none-any.whl (841kB)53% |█████████████████▏ | 450kB 3.3kB/…

3d打印英语文献_锐医学院 | 只需10分钟!解读康复医学文献+英语学习

文献解读英语学习只需10分钟锐医学院致力于专业康复教育培训同时&#xff0c;也在康复领域专家的合作下&#xff0c;一直在研究康复领域最前沿所取得的研究成果、存在的问题以及发展趋势进行系统和全面的叙述和评论与各领域康复专业人士分享。文献解读有助于发现前沿性问题&…

node.js通过回调函数获取异步函数的返回结果

html文件代码<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>我的node.js首页</title> </head> <body></body> </html> 通过buffer流读取html文件var fs require(fs);…

[html] 写页面布局时你有考虑过分辨率因素吗?还要考虑哪些因素呢

[html] 写页面布局时你有考虑过分辨率因素吗&#xff1f;还要考虑哪些因素呢 1.支持的最大和最小分辨率 2.流式布局还是响应式布局个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起…

StreamWriter打开文件报错:”不支持给定路径的格式。“

StreamWriter swnew StreamWriter(path,false,Encoding.Default);这段话出异常&#xff0c;查下来发现文件名中还有:号&#xff0c;把半角的:变成全角的&#xff1a;问题即可解决。 转载于:https://www.cnblogs.com/yanzhenan/archive/2012/02/29/2373511.html

bigdecimal 保留两位小数_一律使用 BigDecimal,避免后患?

你知道的越多&#xff0c;不知道的就越多&#xff0c;业余的像一棵小草&#xff01;你来&#xff0c;我们一起精进&#xff01;你不来&#xff0c;我和你的竞争对手一起精进&#xff01;编辑&#xff1a;业余草zhuanlan.zhihu.com/p/94144867推荐&#xff1a;https://www.xttbl…

tcp 四次挥手_tcp三次握手和四次挥手

SYN&#xff1a;一个很小的包&#xff0c;tcp的第一个包&#xff08;同步序列编号&#xff09;ACK:确认响应SYN、ACK:为1表示确认连接FIN表示关闭连接&#xff0c;PSH表示有 DATA数据传输&#xff0c;RST表示连接重置。Acknowledge number(ack)&#xff1a;确认号&#xff0c;大…

ssh登录服务器提示错误no hostkey alg

ssh登录服务器提示错误no hostkey alg ssh root192.168.1.100 -vvv提示失败&#xff1a;no hostkey alg 登录到192.168.1.100服务器 rm -rf /etc/ssh/ssh*key systemctl restart sshd #我还是移走了&#xff0c;没有删除。因为之前安装了telnet服务&#xff0c;因此不用担心连…

[html] 打印页面时怎样自定义打印页眉页脚或者去掉眉页脚?

[html] 打印页面时怎样自定义打印页眉页脚或者去掉眉页脚&#xff1f; <style type"text/css" media"print"> page { size: auto; /* auto is the initial value / margin: 0mm; / this affects the margin in the printer settings */ } </styl…