À propos de la nouvelle méthode spéciale Python

迷茫
Libérer: 2017-03-25 14:33:22
original
1661 Les gens l'ont consulté

new(cls[, ...])

Appelé pour créer une nouvelle instance de la classe cls. new() est une méthode statique (dans une casse spéciale, vous n'avez donc pas besoin de la déclarer comme telle) qui prend la classe dont une instance a été demandée comme premier argument. Les arguments restants sont ceux passés à l'expression du constructeur d'objet (l'appel à la classe). La valeur de retour de new() doit être la nouvelle instance d'objet (généralement une instance de cls).

Les implémentations typiques créent une nouvelle instance de la classe en appelant la méthode new() de la superclasse en utilisant <span class="pre">super(currentclass, <span class="pre">cls).new(cls[, <span class="pre">...] )<code class="docutils literal"><span class="pre">super(currentclass, <span class="pre">cls).new(cls[, <span class="pre">...])</span></span></span>

avec les arguments appropriés, puis en modifiant l'instance nouvellement créée si nécessaire avant de la renvoyer.new()Si renvoie une instance de init()cls<span class="pre">init(self[, <span class="pre">...])</span></span>, alors la méthode de la nouvelle instance sera invoquée comme <span class="pre">init(self[, <span class="pre">...]) </span></span>new(), où

self

est la nouvelle instance et les arguments restants sont les mêmes que ceux qui ont été transmis à new().Si init() ne le fait pas renvoie une instance de

cls

, alors la méthode new() de la nouvelle instance ne sera pas invoquée.

est principalement destinée à autoriser les sous-classes de types immuables (comme int, str ou tuple) pour personnaliser la création d'instance. Il est également couramment remplacé dans les métaclasses personnalisées afin de personnaliser la création de classes. new()是一个<a href="http://www.php.cn/wiki/188.%20html" target="_blank">静态<em style="line-height: 1.5">方法(不需要声明),类本身(cls)作为第一个参数,其他的的参数是传递给<a hr ef="http://www.php. cn/wiki/60.html" target="_blank">对象</a></em></a><a href="http://www.php.cn/wiki/176.html" target="_blank">构造函数<span style="line-height: 1.5">的<a href="http://www.php.cn/wiki/81.html" target="_blank">表达式</a></span>(对类的调用),nouveau()的返回值应该是一个新一般是cls的实例)。典型的实现方法就是在返回新生成的实例之前,调用父类的new()方法(super(currentclass, <span class="pre">cls).new( cls[, <span class="pre">...])<code class="xref py py-meth docutils literal" style="line-height: 1.5">new()是一个<a href="http://www.php.cn/wiki/188.html" target="_blank">静态</a>方法(不需要声明),类本身(cls)作为第一个参数,其他的的参数是传递给<a href="http://www.php.cn/wiki/60.html" target="_blank">对象</a><a href="http://www.php.cn/wiki/176.html" target="_blank">构造函数</a>的<a href="http://www.php.cn/wiki/81.html" target="_blank">表达式</a>(对类的调用),new()的返回值应该是一个新的对象实例(一般是cls的实例)。典型的实现方法就是在返回新生成的实例之前,调用父类的new()方法(super(currentclass, <span class="pre">cls).new(cls[, <span class="pre">...])</span></span>)来改变这个实例对象,比如说可以把实例里面字符的空格去掉等等(这句是我自己加的)。

)句是我自己加的) 。

如果new()返回了一个cls的实例对象,然后就会调用这个新的实例的init()方法(init[,...]),self指新创建的实例其余的参数和传递给new()的一样。

如果new()没有成功返回一个cls的实例,就不会调用这个实例的init()方法。

new().元类来进行自定义类的创建。

举例:在实例化对象之前,先将字符串

做一个处理,就可以用new,下面的例子就是做一个去空格处理。
class Word(str):

    def __new__(cls,word):

        if &#39; &#39; in word:
            print("there is qutos")
            word = &#39;&#39;.join(word.split())
        return str.__new__(cls,word)
        
a = Word(&#39;hello sherry&#39;)
print(a)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal