Maison > Article > développement back-end > À propos de la nouvelle méthode spéciale Python
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ù
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
, 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>)来改变这个实例对象,比如说可以把实例里面字符的空格去掉等等(这句是我自己加的)。
class Word(str): def __new__(cls,word): if ' ' in word: print("there is qutos") word = ''.join(word.split()) return str.__new__(cls,word) a = Word('hello sherry') print(a)
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!