当前位置:   article > 正文

python学习(第七章)_python语言程序设计教程答案赵璐第七章

python语言程序设计教程答案赵璐第七章

更加抽象

对象的魔力

  • 多态: 意味着可以对不同类的对象使用同样的操作
  • 封装: 对外部世界隐藏对象的工作细节
  • 继承: 以普通的类为基础建立专门的类对象

多态和方法

  • 方法: 绑定到对象特性上面的函数称为方法。

多态的多种形式

封装

继承

类和类型

创建自己的类

  • 建立一个简单的类:

    1. __metaclass__ = type #确定使用新式类
    2. class Person:
    3. def setName(self, name):
    4. self.name = name
    5. def getName(self):
    6. return self.name
    7. def greet(self):
    8. print "Hello, world! I'm %s." % self.name
    9. p = Person()
    10. p.setName('Luke Skywalker')
    11. print p.getName()
    12. p.greet()
  • self(对象自身)的用处和存在的必要性。没有它的话,成员方法就没有访问他们要对其特性进行操作的对象本身。

特性、函数和方法

私有化
  • 为了让方法或特性变为私有(从外部无法访问),只要在它的名字前面加上双下划线即可:

    1. class Securetive:
    2. def __inaccessible(self):
    3. print "Bet you can't see me..."
    4. def accessible(self):
    5. print "The secret message is:"
    6. self.__inaccessible()
    7. s = Securetive()
    8. # s.__inaccessible()
    9. s.accessible()

类的命名空间

指定超类

  • 子类可以扩展超类的定义,将其他类名写在class语句后的圆括号内可以指定超类:

    1. class Filter:
    2. def init(self):
    3. self.blocked = []
    4. def filter(self, sequence):
    5. return [x for x in sequence if x not in self.blocked]
    6. class SPAMFilter(Filter):
    7. def init(self):
    8. self.blocked = ['SPAM']
    9. f = Filter()
    10. f.init()
    11. print f.filter([1, 2, 3])
    12. s = SPAMFilter()
    13. s.init()
    14. print s.filter(['SPAM', 'SPAM', 'SPAM', 'SPAM', 'eggs', 'bacon', 'SPAM'])

调查继承

  • 如果想要查看一个类是否是另一个类的子类,可以内建issubclass函数:

  • 使用isinstance方法检查一个对象是否是一个类的实例

多个超类

一些关于面向对象设计的思考

  • 将属于一类的对象放在一起。如果一个函数操纵一个变量,那么两者最好都在类内作为特性和方法出现
  • 不要让对象过于亲密
  • 要小心继承,尤其是多重继承
  • 简单就好

  • 当考虑需要什么类以及类要有什么方法时,应该尝试下面的方法:

    1. 写下问题的描述(程序要做什么),把所有名词、动词和形容词加下划线
    2. 对于所有名词,用作可能的类
    3. 对于所有动词,用作可能的方法
    4. 对于所有形容词,用作可能的特性
    5. 把所有的方法和特性分配到类

新函数

  1. 函数 & 描述 \\
  2. callable(object) & 确定对象是否可调用 \\
  3. getattr(object, name[, default]) & 确定特性的值,可选择提供默认值 \\
  4. hasattr(object, name) & 确定对象是否有给定的特性 \\
  5. isinstance(object, class) & 确定对象是否是类的实例 \\
  6. issubclass(A, B) & 确定A是否是B的子类 \\
  7. random.choice(sequence) & 从非空序列中随机选择元素 \\
  8. setattr(object, name, value) & 设定对象的给定特性为value \\
  9. type(object) & 返回对象的类型 \\
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/650432
推荐阅读
相关标签
  

闽ICP备14008679号