==================================================================================================================
__init__
#新建的实例本身,连带其中的参数,会一并传给__init__函数自动并执行它。
#定义类的时候,若是添加__init__方法,那么在创建类的实例的时候,实例会自动调用这个方法,一般用来对实例的属性进行初使化。
Variables = None
#None表示空值,它是一个特殊 Python 对象, None的类型是NoneType。
#可以将None赋值给任何变量,也可以给None值变量赋任意类型的值
#使用时可以判断一个变量是否为None
if a is None:
pass
==================================================================================================================
__new__
#一般我们不会去重写该方法,它作为构造函数用于创建对象,是一个工厂函数,专用于生产实例对象。
#__new__方法先被调用,返回一个实例对象,接着 __init__ 被调用。
==================================================================================================================
__call__
#如果在类中实现了 __call__ 方法,那么实例对象也将成为一个可调用对象,调用时会执行里面的内容s。
#类可以记录数据(属性),而函数不行(闭包某种意义上也可行),利用这种特性可以实现基于类的装饰器,在类里面记录状态。
def __call__(self, *args, **kwargs):
#*args 用来将参数打包成tuple给函数体调用
#**kwargs 打包关键字参数成dict给函数体调用
==================================================================================================================
__len__
#只要正确实现了__len__()方法,就可以用len()函数返回Students实例的“长度”:
class Students(object):
def __init__(self, *args):
self.names = args
def __len__(self):
return len(self.names)
>>> ss = Students('Bob', 'Alice', 'Tim')
>>> print len(ss)
3
==================================================================================================================
__getitem__
#如果在类中定义了__getitem__()方法,那么他的实例对象(假设为P)就可以这样P[key]取值。当实例对象做P[key]运算时,就会调用类中的__getitem__()方法。
class S:
def __init__(self):
self.args = {'name': 'jack', 'age': 18}
def __getitem__(self, item):
return self.args[item]
>>> p = S()
>>> print(p['name'])
jack
==================================================================================================================
__str__
#当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据
#__str__方法需要返回一个字符串,当做这个对象的描写
__add__
__sub__
#当实例类运用‘+’‘-’时会调用这两个函数
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
def __add__(self, other):
return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2, 10)
v2 = Vector(5, -2)
v3 = Vector(10, 10)
print(v1 + v2 + v3)
print(v1)
Vector (17, 18)
Vector (2, 10)
Python类的定义及特殊函数
最新推荐文章于 2024-03-13 18:36:13 发布