1.python中__init__ 和__new__方法有什么不同的呢?
# -*- coding: utf-8 -*- class Person(object): """Silly Person""" def __init__(self, name, age): self.name = name self.age = age def __str__(self): return '<Person: %s(%s)>' % (self.name, self.age) if __name__ == '__main__': piglei = Person('piglei', 24) print piglei
这是__init__最基础的用法,但是__init__并不是实例化一个类第一个被调用的方法,__new__才是。
1.p = Person(name, age)
2.首先执行使用name和age参数来执行Person类的__new__方法,这个__new__方法会 返回Person类的一个实例(通常情况下是使用 super(Persion, cls).__new__(cls, ... ...) 这样的方式),
3.然后利用这个实例来调用类的__init__方法,上一步里面__new__产生的实例也就是 __init__里面的的 self
所以,__init__ 和 __new__ 最主要的区别在于:
1.__init__ 通常用于初始化一个新实例,控制这个初始化的过程,比如添加一些属性, 做一些额外的操作,发生在类实例被创建完以后。它是实例级别的方法。
2.__new__ 通常用于控制生成一个新实例的过程。它是类级别的方法。
但是说了这么多,__new__最通常的用法是什么呢,我们什么时候需要__new__?
__new__方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径。
class PositiveInteger(int): def __init__(self, value): super(PositiveInteger, self).__init__(self, abs(value)) i = PositiveInteger(-3) print i
但运行后会发现,结果根本不是我们想的那样,我们任然得到了-3。这是因为对于int这种 不可变的对象,我们只有重载它的__new__方法才能起到自定义的作用。
class PositiveInteger(int): def __new__(cls, value): return super(PositiveInteger, cls).__new__(cls, abs(value)) i = PositiveInteger(-3) print (i) class Positiveint(int): def __new__(cls,ints): ints=abs(ints) return int.__new__(cls,ints)
i = PositiveInteger(-3)
print (i)
2.eval() && repr()
eval将python的字符串当成表达式来求值,并且返回计算结果。eval('1+1') 返回2
repr相反,他将表达式转化成字符串。
通常情况下eval(repr(object))=object
eg:eval(str(1+1)) 返回2
eval(repr(1=1)) 返回2
但是eval(str(datetime.date.today))返回的却是1986 ,很明显不是datetime.date.today的值。
但是我们用eval(repr(datetime.date.today))返回的就是 datetime.date.today(2016.10.20)
这里还涉及到r% 和s%:我们的r% 采用的是repr的形式,我们的s%采用的是str的形式。
str的形式是给我们的用户看的。而我们的repr是给python看的。
3.java Map和Python dict循环
for(Map.Entry<Integer,String> entry:map.entrySet()){ entry.getKey(); entry.getValue(); }
for i in dict.keys: dict[i]
4.python这种一切都是对象,只有引用传递,java中只有值传递。
相关推荐
小小知识点敬请欣赏,谢谢大家,不喜欢不要喷我,我就是来混一下的
Python知识点Python知识点Python知识点Python知识点Python知识点Python知识点Python知识点Python知识点Python知识点Python知识点Python知识点Python知识点Python知识点Python知识点
《Python知识点背诵手册》是一份详细整理的资料,旨在帮助初学者系统地理解和掌握Python的核心概念与技能。下面我们将深入探讨Python的一些关键知识点。 1. **基础语法** - 变量与数据类型:Python支持整型(int)、...
python知识点整理.pdf
### PYTHON密集知识点详解 #### Python简介 Python 是一种高级编程语言,由 Guido van Rossum 在 1989 年圣诞节期间首次发布。Python 的设计哲学强调代码的可读性和简洁性,使得程序员能够使用较少的代码量来表达...
在本文中,我们将深入探讨《从小白到大神,一文掌握 Python 密集知识点》这份资料所涵盖的丰富Python编程知识。Python是一种高级、通用的编程语言,以其易读性、简洁的语法和强大的库支持而备受青睐。无论你是初学者...
【python入门必背】python入门基础知识点合集、python基础知识背记手册 主要内容概要: 第1章 走进 Python. 第2章 Python语言基础 第3章 运算符与表达式 第4章 流程控制语句 第5章 列表与元组 第6章 字典与集合 第...
这个名为“总结python知识点大全.zip”的压缩包文件包含了对Python编程语言关键知识点的详细概述。通过解压并查阅“python总结知识点大全.pdf”,我们可以深入学习Python的基础和高级特性。 1. **基础语法** ...
Python是一种广泛应用于教育和考试领域的高级程序设计语言,尤其适合初学者入门。...这些知识点涵盖了电子学会Python一级考试的主要内容,考生需通过大量的练习和实际操作来巩固和提升自己的编程技能。
在Python编程的学习和实践过程中,掌握重点知识点对于编程能力的提升至关重要。以下是对给定文件内容的知识点的详细说明: 1. Python版本选择: - 在选择Python版本时,首先要明确学习目标和开发需求。 - 需要...
"Python知识点知识树"旨在构建一个完整的知识体系,帮助学习者系统地理解和掌握Python编程。 首先,Python的基础部分包括变量、数据类型、运算符、流程控制(如条件语句、循环语句)以及函数的使用。理解这些基本...
python基础知识点汇总,概括性的列出python的基础知识,和一些常用的内建函数等,很基础的东西,总结了学习python第一阶段需要学习的东西。个人总结,仅供参考,后面还有进阶的知识点汇总。
以上仅是对压缩包内可能涵盖的部分Python知识点的概述,具体的作业题目将根据每个知识点的具体细节进行设计,旨在帮助初学者逐步掌握Python编程技能。通过解决这些题目,学习者不仅能加深对Python的理解,还能提升...
学习Python的过程中,了解并熟练掌握这些基本知识点是至关重要的。这不仅涵盖了数据的存储和处理,还包括了控制流程(如条件语句和循环)、错误处理、模块导入等更复杂的话题。通过不断地实践和应用,可以逐步精通...
这是我学python的所以收获,我很牛的一点是,我把这些知道理解运用,加记忆了。将受益匪浅。
在Python编程的学习过程中,我们首先接触到的是基础语法和内置函数。以下是从给定文件内容中提取的知识点,主要包括...文件中提到的内容还在持续更新,说明学习者可以通过这个途径来不断巩固和扩展自己的Python知识。
Python入门知识点 Python是一种简单易学、功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的...
### Python入门基础知识点详解 #### 一、Python中的基本数据类型 Python作为一种强大的高级编程语言,支持多种数据类型。理解这些基本数据类型是学习Python的基础。 ##### 1. 整数(Integer) - **概念**:整数...
python知识点汇总 思维导图,条理清晰,简单明了,还可以用作笔记查询
python基础,主要覆盖了初级python中的各个基础知识点的总结,偏理论笔记,欢迎指正补充讨论