标签:指定 ffffff pre assm 产生 html 第一个 父类 ror
一 相关的内置函数BIF
1 issubclass()方法
issubclass(class, classinfo)
2 isinstance()方法
isinstance(object, classinfo)
3 hasattr()方法
hasattr(object, name)
4 getattr()方法
getattr(object, name[, default])
5 setattr()方法
setattr(object, name, value)
6 delattr()方法
delattr(object, name)
7 property()方法
class property([fget[, fset[, fdel[, doc]]]])
1 >>> class C: 2 ... def __init__(self,size=10): 3 ... self.size = size 4 ... def getSize(self): 5 ... return self.size 6 ... def setSize(self,value): 7 ... self.size = value 8 ... def delSize(self): 9 ... del self.size 10 ... x = property(getSize,setSize,delSize) 11 ... 12 >>> c1 = C() 13 >>> c1.getSize() 14 10 15 >>> c1.x 16 10 17 >>> c1.x = 18 18 >>> c1.x 19 18 20 >>> c1.getSize() 21 18 22 >>> del c1.x 23 >>> c1.getSize() 24 Traceback (most recent call last): 25 File "<stdin>", line 1, in <module> 26 File "<stdin>", line 5, in getSize 27 AttributeError: ‘C‘ object has no attribute ‘size‘
二 课后习题
0. 如何判断一个类是否为另一个类的子类?
答:使用 issubclass(class, classinfo) 函数,如果第一个参数(class)是第二个参数(classinfo)的一个子类,则返回 True,否则返回 False。
另外以下这些常识你应该知道:
1. 如何判断对象 a 是否为 类 A 的实例对象?
答:使用 isinstance(object, classinfo) 函数,如果第一个参数(object)是第二个参数(classinfo)的实例对象,则返回 True,否则返回 False。I
另外以下这些常识你应该知道:
2. 如何优雅地避免访问对象不存在的属性(不产生异常)?
答:有两种方法可以做到。
第一种先使用 hasattr(object, name) 函数判断属性是否存在,如果存在再访问(第一个参数(object)是对象,第二个参数(name)是属性名的字符串形式);
第二种方法是直接使用 getattr(object, name[, default]) 函数并设置 default 参数(返回对象指定的属性值,如果指定的属性不存在,返回default(可选参数)的值)。
3. Python 的一些 BIF 很奇怪,但却十分有用。请问 property() 函数的作用是什么?
答:property() 函数允许编程人员轻松、有效地管理属性访问。scB?J
4. 请补充以下代码,使程序可以正常运行:
1 class C: 2 def __init__(self, size=10): 3 self.size = size 4 def getXSize(self): 5 return self.size 6 def setXSize(self, value): 7 self.size = value 8 def delXSize(self): 9 del self.size 10 # 此处应该补充一句代码,程序才能正常运行 11 >>> c = C() 12 >>> c.x 13 10 14 >>> c.x = 12 15 >>> c.x 16 12
答:x = property(getXSize, setXSize, delXSize)
5. 通过自学【扩展阅读】Python 函数修饰符(装饰器)的使用,使用修饰符修改以下代码。
代码A:
1 class CodeA: 2 def foo(): 3 print("调用静态方法 foo()") 4 # 将 foo() 方法设置为静态方法 5 foo = staticmethod(foo)
代码B:P%34d?|Bc
1 class CodeB: 2 def foo(cls): 3 print("调用类方法 foo()") 4 # 将 foo() 方法设置为类方法 5 foo = classmethod(foo)
答:其实正是因为设置静态方法和类方法过于讨人吐槽,因此 Python 的作者才开发出了函数修饰符的形式替代。
代码A:
1 class CodeA: 2 @staticmethod 3 def foo(): 4 print("调用静态方法 foo()")
代码B:- SI?C&].r
1 class CodeB: 2 @classmethod 3 def foo(cls): 4 print("调用类方法 foo()")
6. 你真的理解了修饰符的用法吗?那请你写出以下代码没有用上修饰符的等同形式:[dm,PQH5&
1 @something 2 def f(): 3 print("I love FishC.com!")
答:其实 Python 的修饰符就是一种优雅的封装,但要注意的是只可以在模块或类定义内对函数进行修饰,不允许修饰一个类。
一个修饰符就是一个函数,它将被修饰的函数做为参数,并返回修饰后的同名函数或其它可调用的东西。
1 @something 2 def f(): 3 print("I love FishC.com!") 4 # 相当于 5 def f(): 6 print("I love FishC.com!") 7 f = something(f)
7. 通过自学【扩展阅读】property 的详细使用方法,将第 4 题的代码修改为“使用属性修饰符创建描述符”的方式实现。
答:可能你还没听说过描述符(这个概念在你学完接下来的几节课自然会了解),但这一点都影响聪明的你修改这个程序.
1 class C: 2 def __init__(self, size=10): 3 self.size = size 4 5 @property 6 def x(self): 7 return self.size 8 @x.setter 9 def x(self, value): 10 self.size = value 11 @x.deleter 12 def x(self): 13 del self.size
标签:指定 ffffff pre assm 产生 html 第一个 父类 ror
原文地址:https://www.cnblogs.com/luoxun/p/13562588.html