python类参数self使用示例

yipeiwu_com7年前Python基础

复制代码 代码如下:

#coding:utf-8
"""
__new__和__init__到底是怎么一回事,看下面的代码
如果类没有定义__new__方法,就从父类继承这个__new__方法。
__new__先于__init__执行,类带括号调用时,发生这样的一件事,
先调用类的__new__方法,放回该类的实例对象,这个实例对象就是__init__方法的第一个参数。
请看代码中tmp,self,p的内存地址都是一样的,都是类的实例对象。
"""

class Foo(object):
    def __new__(cls, *args, **kwargs):
        """如果不覆盖这个__new__方法,也就是说不写这个__new__方法,类会从object
        继承__new__方法完成返回值实例对象
        """
        print "__new__方法先被调用"
        tmp = super(Foo,cls).__new__(cls,*args, **kwargs)
        print id(tmp)
        print type(tmp)
        print isinstance(tmp,Foo)
        print issubclass(type(tmp),Foo)
        return tmp

    def __init__(self):
        """self是python默认传的值,该值是调用__new__的返回值"""
        print "__init__被调用"
        print id(self)


p = Foo()
print id(p)
print type(p)

相关文章

Python中的异常处理学习笔记

Python 是面向对象的语言,所以程序抛出的异常也是类。 常见的异常类 1.NameError:尝试访问一个没有申明的变量 2.ZeroDivisionError:除数为 0 3.Sy...

python实现中文文本分句的例子

对于英文文本分句比较简单,只要根据终结符"."划分就好,中文文本分句看似很简单,但是实现时会遇到很多麻烦,尤其是处理社交媒体数据时,会遇到文本格式不规范等问题。 下面代码针对一段一段的短...

django解决跨域请求的问题

解决方案 1.安装django-cors-headers pip install django-cors-headers 2.配置settings.py文件 INSTA...

python中PIL安装简单教程

python 的PIL安装是一件很头疼的的事, 如果你要在python 中使用图型程序那怕只是将个图片从二进制流中存盘(例如使用Scrapy 爬网存图),那么都会使用到 PIL 这库,而...

解决在Python编辑器pycharm中程序run正常debug错误的问题

解决在Python编辑器pycharm中程序run正常debug错误的问题

初学Python,写了一小段程序,在pycharm中debug一直报错,在网上搜了很久,尝试多种方法后还是没有用。 尝试了很久之后,发现这个问题是由于: 1、程序中有中文注释。 2、程...