[Python]小甲鱼Python视频第040课(类和对象:一些相关的BIF )课后题及参考解答
# -*- coding: utf-8 -*- """ Created on Tue Mar 12 23:36:51 2019 @author: fengs """ """ 0. 如何判断一个类是否为另一个类的子类? issubclass(A,B) A是B的子类就返回True 1. 如何判断对象 a 是否为 类 A 的实例对象? isinstance(a,A) 2. 如何优雅地避免访问对象不存在的属性(不产生异常)? a. hasattr(object,name) b. getattr(ovject,'变量名') 没获取到会返回None或默认值而不是抛出异常 3. Python 的一些 BIF 很奇怪,但却十分有用。请问 property() 函数的作用是什么? 绑定一个类的实例对象在进行获取操作、设置操作和删除操作时对应的函数 4. 请补充以下代码,使程序可以正常运行: class C: def __init__(self, size=10): self.size = size def getXSize(self): return self.size def setXSize(self, value): self.size = value def delXSize(self): del self.size # 此处应该补充一句代码,程序才能正常运行 >>> c.x 10 >>> c.x = 12 >>> c.x 12 x = property(getXSize,setXSize,delXSize) """ import time """ 5. 通过自学【扩展阅读】Python 函数修饰符(装饰器)的使用,使用修饰符修改以下代码。 class CodeA: def foo(): print("调用静态方法 foo()") # 将 foo() 方法设置为静态方法 foo = staticmethod(foo) class CodeB: def foo(cls): print("调用类方法 foo()") # 将 foo() 方法设置为类方法 foo = classmethod(foo) """ class CodeA: @staticmethod def foo(): print("调用静态方法 foo()") # 将 foo() 方法设置为静态方法 #foo = staticmethod(foo) class CodeB: @classmethod def foo(cls): print("调用类方法 foo()") # 将 foo() 方法设置为类方法 #foo = classmethod(foo) CodeA().foo() CodeB().foo() """ 6. 你真的理解了修饰符的用法吗?那请你写出以下代码没有用上修饰符的等同形式: @something def f(): print("I love FishC.com!") f = something(f) 返回的是函数的闭包 """ def something1(func): def call(): print('---start----') start = time.perf_counter() func() print('-------end------') end = time.perf_counter() print('used: %s ' % (end - start)) return call @something1 def f(): print("I love FishC.com!") f() """ 7. 通过自学【扩展阅读】property 的详细使用方法,将第 4 题的代码修改为“使用属性修饰符创建描述符”的方式实现。 """ class C: def __init__(self, size=10): self._size = size @property def size(self): print('getter') return self._size @size.setter def size(self, value): print('setter') self._size = value @size.deleter def size(self): print('deleter') del self._size # 此处应该补充一句代码,程序才能正常运行 c = C() print('---------------start') print(c.size) c.size = 12 print(c.size) del(c.size) print('---------------end')
~不再更新,都不让我写公式,博客园太拉胯了