


Python interview frequently asked questions: The difference between __Init__ and __New__
Methods defined within a Python class and ending with _ _ xx _ _ are all built-in methods of the class, also called magic methods.
The built-in methods of the class will be automatically triggered when certain conditions are met. Here we focus on explaining __init__ and __new__, which are related to instance creation.
Brief description__init__
__init__(self): We are relatively familiar with this method. It is the default initialization method in Python classes, that is, the method that will be executed when a class is instantiated. .
Detailed explanation of __new__
__new__ Method rewriting is very fixed, usually as follows:
def __new__(cls): return super().__new__(cls)
where cls represents the class itself.
The code for rewriting the __new__ method is very fixed: when rewriting the __new__ method, you must return super().__new__(cls), or return object.__new__(cls), otherwise the python interpreter will fail. To reference an object with allocated space, the object's initialization method will not be called. For example:
class Mycls: def __new__(cls): print('new') return super().__new__(cls) def __init__(self): print('init') my=Mycls()
Output:
- new
- init
We can see that new is output before init, proving __new__ (cls) is executed before __init__(self).
We rewrite the code:
def __new__(cls): print('new') my=Mycls() print(my)
Output:
- new
- None
You can see if There is no return value in __new__(cls): no instance will be returned, and __init__(self) will not be executed.
Summary of __new__ and __init__
1. The __new__() method is used to create an instance. It will be called first before the class is instantiated. It is a class method and a static method. The __init__() method is used to initialize the instance. This method is called after the instance object is created. It is a method of the instance object and is used to set some initial values of the class instance object.
2. If both the __init__() method and the __new__() method appear in the class, the __new__() method will be called first and then the __init__() method. The __new__() method is the first step in creating an instance. After execution, the instance of the created class needs to be returned. Otherwise, an error will be reported and the __init__() method cannot be executed. Among them, the __init__() method will not return any information.
Application of __new__
Some students will ask what can be achieved using __new__?
Personally, I think singleton is the most classic application. Singleton Pattern is a commonly used software design pattern. The main purpose of this pattern is to ensure that only one instance of a certain class exists. Singleton objects come in handy when we want only one instance of a certain class to appear in the entire system. For example, there can be multiple printing tasks in a system, but there can only be one working task; a system can only have one window manager or file system; a system can only have one timing tool or ID (serial number) generator .
The specific implementation code is as follows:
class Mycls: _instance = None def __new__(cls): # 判断该类的属性是否为空;对第一个对象没有被创建,我们应该调用父类的方法,为第一个对象分配空间 if cls._instance == None: # 把类属性中保存的对象引用返回给python的解释器 cls._instance = object.__new__(cls) return cls._instance # 如果cls._instance不为None,直接返回已经实例化了的实例对象 else: return cls._instance def __init__(self): print('init') my1=Mycls() print(my1) my2=Mycls() print(my2)
Output:
init <__main__.Mycls object at 0x000000406E471148> Init <__main__.Mycls object at 0x000000406E471148>
You can see that although they are called my1 and my2, they are both objects 0x000000406E471148. This is the application of the singleton mode. .
The above is the detailed content of Python interview frequently asked questions: The difference between __Init__ and __New__. For more information, please follow other related articles on the PHP Chinese website!

TomergelistsinPython,youcanusethe operator,extendmethod,listcomprehension,oritertools.chain,eachwithspecificadvantages:1)The operatorissimplebutlessefficientforlargelists;2)extendismemory-efficientbutmodifiestheoriginallist;3)listcomprehensionoffersf

In Python 3, two lists can be connected through a variety of methods: 1) Use operator, which is suitable for small lists, but is inefficient for large lists; 2) Use extend method, which is suitable for large lists, with high memory efficiency, but will modify the original list; 3) Use * operator, which is suitable for merging multiple lists, without modifying the original list; 4) Use itertools.chain, which is suitable for large data sets, with high memory efficiency.

Using the join() method is the most efficient way to connect strings from lists in Python. 1) Use the join() method to be efficient and easy to read. 2) The cycle uses operators inefficiently for large lists. 3) The combination of list comprehension and join() is suitable for scenarios that require conversion. 4) The reduce() method is suitable for other types of reductions, but is inefficient for string concatenation. The complete sentence ends.

PythonexecutionistheprocessoftransformingPythoncodeintoexecutableinstructions.1)Theinterpreterreadsthecode,convertingitintobytecode,whichthePythonVirtualMachine(PVM)executes.2)TheGlobalInterpreterLock(GIL)managesthreadexecution,potentiallylimitingmul

Key features of Python include: 1. The syntax is concise and easy to understand, suitable for beginners; 2. Dynamic type system, improving development speed; 3. Rich standard library, supporting multiple tasks; 4. Strong community and ecosystem, providing extensive support; 5. Interpretation, suitable for scripting and rapid prototyping; 6. Multi-paradigm support, suitable for various programming styles.

Python is an interpreted language, but it also includes the compilation process. 1) Python code is first compiled into bytecode. 2) Bytecode is interpreted and executed by Python virtual machine. 3) This hybrid mechanism makes Python both flexible and efficient, but not as fast as a fully compiled language.

Useaforloopwheniteratingoverasequenceorforaspecificnumberoftimes;useawhileloopwhencontinuinguntilaconditionismet.Forloopsareidealforknownsequences,whilewhileloopssuitsituationswithundeterminediterations.

Pythonloopscanleadtoerrorslikeinfiniteloops,modifyinglistsduringiteration,off-by-oneerrors,zero-indexingissues,andnestedloopinefficiencies.Toavoidthese:1)Use'i


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Linux new version
SublimeText3 Linux latest version

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

Notepad++7.3.1
Easy-to-use and free code editor
