Py003-01-12内置方法

内置方法

  • isinstance(对象,类名) 谁是谁的实例
  • issubclass(sub,super) 这个类是不是另一个类的子类

item系列

将类定制成像字典一样的操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Foo:
def __init__(self,name):
self.name = name

def __getitem__(self, item):
print('get item')
self.__dict__
print(item)
return self.__dict__.get(item)

def __setitem__(self, key,value):
print('set item')
print(key,value)
self.__dict__[key] = value

def __delitem__(self, key):
print('del item')
print(key)
del self.__dict__[key]

obj = Foo('hjx')
print(obj.__dict__)
# 属性名
print(obj['name']) # obj.name
print(obj['namexxx'] ) # 不会报错


obj['sex'] = 'man'
print(obj['sex'])

del obj['name']
print(obj.__dict__)

双下str双下

1
2
3
4
5
6
7
8
9
10
11
class People:
def __init__(self,name,age):
self.name = name
self.age = age

def __str__(self):
return '<name:%s,age:%s>'%(self.name,self.age)

p = People('hjx',18)

print(p) # <name:hjx,age:18>

双下del双下

1
2
3
4
5
6
f = open('aa.py',mode='w+')
f.read()
f.close() # 回收操作系统资源

# 此时f还存在不存在——存在
print(f) # <_io.TextIOWrapper name='aa.py' mode='w+' encoding='cp936'>

再看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Open:
def __init__(self,fileName):
print('open file...')
self.fileName = fileName

def __del__(self):
print('del_____')

f2 = Open('aa.txt')
# del f2
print('-----main------')
'''
open file...
-----main------
del_____
'''

---------------------
f3 = Open('aa.txt')
del f3
print('-----main------')

'''
open file...
del_____
-----main------
'''

执行结果:你不调用 del程序会在执行结束后自动帮你调用 ,如果你手动调用了,就不帮你调用了