python 类的定制_python定制类详解

1.什么是定制类

python中包含很多内置的(Built-in)函数,异常,对象。

分别有不同的作用,我们可以重写这些功能。

2.__str__

输出对象

class Language(object):

def __init__(self):

self.name = 'Python'

print(Language())

运行结果:

a6bc3ea49566a84a2139460f2bfa65e4.png

class Language(object):

def __init__(self):

self.name = 'Python'

def __str__(self):

return "Language():%s"%(self.name)

print(Language())

运行结果:

52911c81c179129a0a21a5571d8e18a4.png

3.__iter__

遍历对象

class Language(object):

def __init__(self):

self.name = 'Python'

self.count = 0

def __iter__(self):

return self

def __next__(self):

self.count += 1

if self.count > 5:

raise StopIteration()

return self.count

language = Language()

for i in language:

print(i)

运行结果:

31e4f406a8f165a62bacbcad0b2ab1f3.png

__iter__返回的是迭代对象language

for..in..会自动调用__iter__迭代对象的__next__方法,直到__next__方法返回StopIteration异常。

4.__getitem__

定义了__getitem__方法后才能使用索引取值

class Language(object):

def __getitem__(self, item):

return item

language = Language()

print(language[0])

运行结果:

1c6a4e091e43a7467e9490681b233457.png

5.__getattr__

没有找到属性时,才会调用__getattr__

class Language(object):

def __init__(self):

self.name = 'Python'

def __getattr__(self, item):

if item == 'score':

return 9

elif item == 'rank':

return lambda :5

language = Language()

print(language.score)

print(language.rank())

运行结果:

2cf6567868bf300042e518502d108f14.png

6.__call__

对象可执行

class Language(object):

def __init__(self):

self.name = 'Python'

def __call__(self, *args, **kwargs):

print('My name is %s'%self.name)

language = Language()

language()

运行结果:

3aaa0aa3a169c911383865482d06fc4a.png

来源:https://www.cnblogs.com/shijingjing07/p/7442046.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值