Python学习记录(23)

一、对象 = 属性(静态) + 方法(动态)

二、OO(object oriented) 面向对象 的特征

1)封装

2)继承

3)多态

三、对象中的属性和方法,在编程中实际是什么?

变量(属性)和函数(方法)

四、类和对象是什么关系?

类和对象之间的关系就如同用模具和用这个模具制作出来的物品之间的关系。一个类为他的全部对象给出了一个统一的定义,而他的每个对象则是符合这种定义的一个实体,因此类和对象的关系就是抽象和具体的关系。

五、类的属性定义应该尽可能抽象还是具体?

正确的做法是尽可能的抽象,因为这样更符合面向对象的思维。

PS:类的实例化结果就是对象,而对一类对象的抽象就是类。

类描述了一组有相同特性(属性)和相同行为(方法)的对象。

六、如果我们不希望对象的属性或方法被外部直接引用,我们可以怎么做?

答:我们可以在属性或方法名字前边加上双下划线,这样子从外部是无法直接访问到,会显示AttributeError错误。

>>> class Person:

__name = "小甲鱼"

def getName(self):

return self.__name

>>> p = Person()

>>> p.__name

Traceback (most recent call last):

  File "<pyshell#57>", line 1, in <module>

    p.__name

AttributeError: 'Person' object has no attribute '__name'

PS:我们把getName方法称之为"访问器"。Python事实上是采用一种叫"name mangling"技术,将以双下划线开头的变量名巧妙的改了个名字而已,我们仍然可以在外部通过"_类名__变量名"的方式访问:

>>> p._Person__name

'小甲鱼'

当然我们并不提倡这种抬杠较真粗暴不文明的访问形式……

七、类在实例化后哪个方法会被自动调用?

答:__init__方法会在类实例化时被自动调用,我们称之为魔法方法。你可以重写这个方法,为对象定制初始化方案。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,937评论 0 8
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,859评论 2 9
  • 20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...
    iOS_恒仔阅读 2,314评论 1 6
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • 快过年了,教练请我们吃饭喝酒,很多好吃的,改善伙食啦。每个人都有自己生活的不如意,各个方面。教练喝点小酒,发泄了心...
    悟空金月饺子阅读 159评论 0 0