内容正文:
魔法方法
Simple Easy Open Free Portable
1
问题提出:类专用方法有多么神奇?
类有一些专有方法,类的初始化属性方法_init_就是其中之一,我们会看到程序中没有调用_init_方法的语句,而是在执行创建对象语句触发了init_方法的调用,它让类瞬间生成实例。
2
目录
contents
__str__方法△☆
01
__repr__方法
02
__call__方法
03
__len__方法
04
3
PART
01
__str__方法
概念
分类
4
类的初始化属性方法格式是:
def __init__(形参列表):
self.属性1=值
self.属性2=值
5
class Foo:
def __init__(self,name,age):
self.name=name
self.age=age
def __str__(self):
return ‘name is %s’% self.name
f=Foo(‘Jack’,18)
print(f)
假定f为一个类的实例,print(f)等价于调用str(f),等价调用f._str_(),使用f._str_()可以定制打印方法。
6
1. 以前我们调用方法都是用:对象.方法名,而今天我们学习的是程序中的print语句触发了__str__(self)方法调用。你觉得神奇吗?
2.运行一下,我们惊喜地发现当__str_(_self)方法和__repr__(self)方法同时存在时,只是调用的__str__(self)方法。
体会:
7
PART
02
__call__方法
8
1.初始化属性的方法名为__init__,在init单词左右都有双下划线,名称固定;
2.在__init__方法定义中,形参self必不可少,还必须位于其他形参的前面;
3.在创建实例时自动调用__init__方法;
4.普通方法是在对象调用时才执行。
需要说明的是:
9
class Foo:
def _init_(self,name):
self.name=name
def _call_(self):
print(‘我被调用了!’)
obj=Foo(‘luo’ )
obj()
案例:阅读程序写出运行结果
10
体会:你是否体会到:_call_方法把对象当做一个函数用。
11
PART
03
__len__方法
12
_len_方法:
可以返回一个对象的长度,字符串对象返回的是字符个数;字典对象返回的是关键字个数;列表或序列对象返回的是元素的个数。
13
阅读程序,写出运行结果
可以返回一个对象的长度,字符串对象返回的是字符个数;字典对象返回的是关键字个数;列表或序列对象返回的是元素的个数。 class Foo:
def _init_(self,name,age):
self.name=name
self.age=age
def _str_(self):
return str(self.age)
def _len_(self):
return len(self.name)
f=Foo(‘Jack’,18)
print(len(f))
print(f)
14
程序运行结果是:
4
18
15
1.__str__方法和__repr方法
2..__call__方法
3. __len__方法
LOREM
本节小结
16
感谢观看
Thank you for your download and watch
17
$$