在这里,我们将给大家分享关于我应该在Python中实现__ne__作为__eq__的否定吗?的知识,同时也会涉及到如何更有效地python__new__和__init__的区别、python中__in
在这里,我们将给大家分享关于我应该在Python中实现__ne__作为__eq__的否定吗?的知识,同时也会涉及到如何更有效地python __new__和__init__的区别、python 中 __init__和__new__的区别、python 中__doc__、__name__、__file__的使用、Python 中__init__和__new__的区别是什么?的内容。
本文目录一览:- 我应该在Python中实现__ne__作为__eq__的否定吗?
- python __new__和__init__的区别
- python 中 __init__和__new__的区别
- python 中__doc__、__name__、__file__的使用
- Python 中__init__和__new__的区别是什么?
我应该在Python中实现__ne__作为__eq__的否定吗?
我有一个我想覆盖该__eq__
方法的类。我也应该重写该__ne__
方法似乎很有意义。我应该这样__ne__
否定实施,__eq__
还是一个坏主意?
class A: def __init__(self, state): self.state = state def __eq__(self, other): return self.state == other.state def __ne__(self, other): return not self.__eq__(other)
答案1
小编典典是的,那很好。实际上,文档敦促您在定义__ne__
时定义__eq__
:
比较运算符之间没有隐含的关系。的真相
x==y
并不意味着那x!=y
是错误的。因此,在定义时__eq__()
,还应该定义一个,__ne__()
以便操作符能够按预期运行。
在很多情况下(例如这种情况),它__eq__
与否的结果一样简单,但并不总是如此。
python __new__和__init__的区别
__new__和__init__的区别
# new 是用来控制对象的生成过程,在对象生成之前
# init 是用来完善对象的
# 如果new方法不返回对象,则不会调用init方法
class User:
def __new__(cls, *args, **kwargs):
print("in new")
return super().__new__(cls)
def __init__(self, name):
print("in init")
self.name = name
if __name__ == ''__main__'':
user = User(name="abc")
python 中 __init__和__new__的区别
用过 python 写过面向对象的代码的人对__init__方法应该很熟悉了,__init__ 方法通常用在初始化一个类实例的时候.
例如:
# -*- coding: utf-8 -*-
''''''
Created on Mar 31, 2016
@author: fky
''''''
class Test(object):
def __init__(self,name):
self.name = name
def __str__(self,):
return ''<Test: %s>'' % self.name
if __name__ == ''__main__'':
test = Test(''test1'')
print(test)
结果:
<Test: test1>
这就是__init__普通用法,其实当实例化一个类最先被调用的方法 __new__ 方法。
class Test(object):
def __new__(self,name):
print(''__new__'')
return super().__new__(self)
def __init__(self,name):
print(''__init__'')
self.name = name
def __str__(self,):
return ''<Test: %s>'' % self.name
if __name__ == ''__main__'':
test = Test(''test1'')
print(test)
结果:
__new__
__init__
<Test: test1>
从这个运行结果可以看到__new__方法的调用是发生在__init__之前的。
__new__ 的作用
依照 Python 官方文档的说法,__new__方法主要是当你继承一些不可变的 class 时 (比如 int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径。还有就是实现自定义的 metaclass。
python 中__doc__、__name__、__file__的使用
各自的作用:
doc:获取到注释内容
name:获取到函数的名称
file:获取到当前的文件路径(获取模块路径)
示例代码
#! /usr/bin/env python
# -*- coding: utf-8 -*-
from win32gui import *
import timeit
titles = set()
def foo(hwnd,mouse):
"""
我是foo的注释
"""
if IsWindow(hwnd) and IsWindowEnabled(hwnd) and IsWindowVisible(hwnd):
titles.add(GetWindowText(hwnd))
print("timeit.__doc__:",timeit.__doc__)
print("timeit.__name__:",timeit.__name__)
print("timeit.__file__:",timeit.__file__)
print("foo.__doc__:",foo.__doc__)
print("foo.__name__:",foo.__name__)
print("__file__:",__file__)
输出结果
timeit.__doc__: Tool for measuring execution time of small code snippets.
This module avoids a number of common traps for measuring execution
times. See a
Python 中__init__和__new__的区别是什么?
__init__和__new__二者均是 Python 面向对象语言中的函数,其中__new__使用频率较少,__init__则使用的频率较多,那么 Python 中__init__和__new__的区别是什么?具体请看以下内容介绍。
在 Python 中,__init__和__new__是两个特殊的方法,用于对象的创建和初始化过程。它们的作用和执行时有所不同:
1、__new__
__new__是一个用于创建对象的特殊方法,是在对象实例化之前调用的。
__new__方法负责创建对象,并返回一个新的对象实例。
__new__方法是一个类方法,必须返回一个新的对象实例。
可以通过重写__new__方法来控制对象的创建过程,例如自定义对象的创建逻辑、返回其他类型的实例等。
2、__init__
__init__是一个用于对象初始化的特殊方法,是在对象实例化之后调用的。
__init__方法接收新创建的对象实例作为其第一个参数,并在该方法内部对对象的属性进行初始化。
__init__方法通常用于设置对象的初始状态,对属性进行赋值等操作。
__init__方法不需要返回任何内容,它的主要目的是对对象进行初始化。
总结:
__new__是在对象实例化之前调用,用于创建对象实例;
__init__是在对象实例化之后调用,用于初始化对象的属性。
在实际使用中,通常情况下我们只需要重写__init__方法来实现对象的初始化,而对__new__方法进行修改的需求相对较少。
关于我应该在Python中实现__ne__作为__eq__的否定吗?的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于python __new__和__init__的区别、python 中 __init__和__new__的区别、python 中__doc__、__name__、__file__的使用、Python 中__init__和__new__的区别是什么?的相关知识,请在本站寻找。
本文标签: