Python类的定义及特殊函数

==================================================================================================================
__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)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BTWBB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值