Python—面向对象06 内置方法

一 .isinstance(obj,cls)和issubclass(sub,super)

isinstance(obj,cls)检查是否obj是否是类 cls 的对象

class Foo(object):
    pass
obj = Foo()
isinstance(obj, Foo)

issubclass(sub, super)检查sub类是否是 super 类的派生类

class Foo(object):
    pass
class Bar(Foo):
    pass
issubclass(Bar, Foo)

2. item系列

_开头 __结尾 的方法,在python中是系统内置的方法,一般会在某个时候自动触发

# item 系列
class Foo:
    def __init__(self, name):
        self.name = name

    def __getitem__(self, item):  #  item = 'name'
        # print('getitem.....')
        # print(item)
        return self.__dict__.get(item)

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

    def __delitem__(self, key):
        self.__dict__.pop(key)
        # del self.__dict__[key]

obj = Foo("gd")

# item 模拟字典的取值方式
print(obj['name'])  #gd  触发 __getitem_ 方法

# 设置
obj['sex'] = 'boy'
print(obj.__dict__)  # {'name': 'gd', 'sex': 'boy'}

# 删除
del obj['sex']  # 触发 __delitem__
print(obj.__dict__)  # {'name': 'gd'}

3. __ str __

dic = {'name':'kaka', 'skill':'写轮复制'}
print(dic)  # print(dic)  #
# 类比一下,如果是对象,这个时候打印出来的应该是 function地址之类的,但是现在直接打印出了里面的数据属性
#------------------------------------------

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)

obj = People('gd', 22)

print(obj)  # 此时会触发 __str__方法
# name:gd  age:22

4. __ del __

class Open:
    def __init__(self, file_name):
        self.file_name = file_name

    def __del__(self):
        # 程序运行结束后会调用此方法,可以在这里做 资源回收的逻辑
        print("程序运行结束....")

f = Open('123.txt')
print("哒哒哒...")

# 哒哒哒...
# 程序运行结束....

....................

其他内置方法........后续碰到再补充

扫描二维码关注公众号,回复: 2445272 查看本文章

猜你喜欢

转载自www.cnblogs.com/friday69/p/9386220.html