zoukankan      html  css  js  c++  java
  • Python3.2官方文档翻译--实例对象和方法对象

    6.3.3 实例对象

    如今我们用实例对象做什么呢?实例对象唯一可用的操作就是属性引用。如今有两种合法的属性名称:数据属性和方法。

    数据属性相当于smallTalk中的实例变量,C++中的数据成员。数据属性不须要申明。像局部连梁一样,当他们初次赋值的时候他们就存在了。比如,假设x是上面创建MyClass类的一个实例, 以下的代码块表示将会打印值16.这个值没有不论什么错误。

    x.counter = 1

    while x.counter < 10:

    x.counter = x.counter*2

    print(x.counter)

    del x.counter

    实例属性引用的还有一中方法是方法。方法是属于对于对象的函数。(在python中,术语方法和类实例不是唯一的):其它的对象类型也有方法。比如,list对象有称为appendinsert,removesort方法等等。可是,在接下来的讨论中,除非特别说明,我们用术语方法来用对象实例的方法。)

    一个实例对象的合法方法名称取决于它的类。依照定义,一个类中全部函数对象定义了相相应的实例方法。因此,在我们样例中,x.f是一个合法的方法引用,由于MyClass.f是一个方法,可是x.i不是,由于MyClass.i不是。可是x.fMyClass.f不同,它时一个方法对象,而不是函数对象。

    6.3.4 方法对象

    通常来说,方法在绑定之后就会被调用。

    X.f()

    MyClass实例中,它将会返回字符串’hello world’.可是,你无需立马调用方法:x.f是方法对象,能够暂被保存然后后来再调用,比如:

    xf = x.f

    while True:

    print(xf())

    将会不断打印hello world直到程序终止。

    当方法调用时详细发生了什么?你可能已经注意到了,虽然函数定义f()时能够有个參数,但x.f()调用时候没有传參数。那參数发生了什么?当要求參数的函数没有不论什么參数而调用时,python一定会抛出异常。即使參数真正什么也没用。

    其实,你能够推測答案: 方法有一个特性就是实例对象被当做第一个參数传递给了函数。在我们的样例中,x.f()方法等同于MyClass.fx.一般来说,调用一个包括n个參数列表的方法等同于对应的函数,这个函数包括一个在首次插入方法对象时创建的列表。

    假设你仍然不明确方法怎样工作,看看它的实现可能就会明确真相。 当一个实例属性引用一个不是数据属性时,它的类是可搜索的。假设这个名称表示一个合法函数对象属性,通过把在抽象类中发现的(指针)实例对象和函数对象封装一起进而创建了方法对象。当方法对象用一个列表參数调用时,一个新的參数列表将会从实例对象和參数列表中创建,而且函数对象用新的属性列表调用。

  • 相关阅读:
    美团配送系统架构演进实践
    系统学习NLP(二十一)--SWEM
    转:大众点评信息流基于文本生成的创意优化实践
    从Encoder到Decoder实现Seq2Seq模型
    从YOLOv1到YOLOv3,目标检测的进化之路
    23岁融了一千万,被创新工场投资,创业就是解决问题。专访丨陈海沙
    通俗理解word2vec
    关于眼下分词的想法
    Angular 2的12个经典面试问题汇总(文末附带Angular測试)
    ubuntu14.04-64位机配置android开发环境,ADT,sdk,eclipsea
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4296413.html
Copyright © 2011-2022 走看看