为了账号安全,请及时绑定邮箱和手机立即绑定
编程百科手册

扫一扫 手机阅读

精选留言
  • 派森

    今天面试遇到了,讲不清楚,赶紧来看看

  • winfred_wu

    老师,您好! 请问,“继承搜索的顺序发生了改变,经典类多继承属性搜索顺序: 先深入继承树左侧,再返回,开始找右侧;新式类多继承属性搜索顺序: 先水平搜索,然后再向上移动。”这段话没有看懂? Python 3多继承下,查找属性或方法的顺序(MRO)应该是C3算法; Python 2多继承下,查找属性或方法的顺序(MRO)应该是DFS或BFS算法;

    讲师回答 / Jarvinia

    这段内容可以参照第14小节(https://www.imooc.com/read/69/article/1642)的多重继承部分。

  • _奋斗的小乔

    有一些困惑的地方,希望老师能指点一二。 如您所说,type()函数是可以动态创建类的, 我也就可以理解为type()函数是创建类的模版,由type()函数创造出来的类的类型都属于type, 那新式类的父类object跟type又有什么关系呢?我目前的理解是,object类是所有类的父类。object类的类型是type,不知道对不对。 还有,object类也是由type()函数动态创建的吗?那是否可以理解为object类是type元类的实例?那type的父类又是object类,这是怎么做到的?type元类的类型是type,这又是如何做到的呢?

    讲师回答 / Jarvinia

    “object类是所有类的父类。object类的类型是type”是正确的。所有类都是继承自 object,因此任何多重继承的情况都提供了一条以上的路径可以通向 object。 另外,你的那些问题无法在评论里简单几句给你作答,所以,我觉得你可以参考一下这个文档,http://www.eecg.toronto.edu/~jzhu/csc326/readings/metaclass-class-instance.pdf 里面形容type和object的关系就像鸡和蛋的关系,是先有鸡还是先有蛋,这个很难说,但是我们弄清楚怎么使用type和object才是关键。

  • _奋斗的小乔

    如果我们通过猴子修补来更改方法的行为,则该方法将不再具有记录的方式。因此,除非每个客户端或用户都知道此更改,否则可能导致他们的代码行为异常; 麻烦解释一下这句:不再具有记录的方式?每个客户端或用户都知道此更改? 谢谢老师了。

    讲师回答 / Jarvinia

    因为大多数使用猴子补丁的情况都是对第三方库的使用,我写了个简单的例子https://gist.github.com/devjuntu/c2a33b0f565c783bd232f0f38b51df84,里面我给第三方类对象赋予了一个新方法,这是可行的,但如果第三方库后来更新了他们的接口,比如也定义了一个同名的实例方法,这样就会有一些不可预知的行为发生。

  • 谢思阳

    老师能否具体解释一下这一段: Tips:不知道你有没有注意到一点:我们在使用 len() 函数获取序列长度的时候语法是 len(seq) , 但是如果对于一个列表进行扩展操作使用的语法是 seq.append() 。这是因为 len() 是 Python 的内置函数(Built-in functions),而 append() 则是内置方法。内置函数对象是对于C函数的外部封装,而内置方法,实际上是内置函数的另一种形式,只不过还包含了一个传入C函数的对象作为隐式的额外参数。max()和min()同上。

    讲师回答 / Jarvinia

    这一段呢,一个目的是为了让大家区分两个概念,方法和函数。与类和实例无绑定关系的function都属于函数,与类和实例有绑定关系的function都属于方法(method)。append是实例方法,它需要绑定到一个List对象,作用于一个对象,它会改变这个对象的状态,它不用返回值,所以你不用多此一举这么写 a = [1], a=a.append(2)。另外呢, len是一个内置函数对象,你可以通过help(len)查看,它的第一个参数是一个对象,而这个对象必须定义了__len__方法,所以调用len(obj)就相当于调用obj.__len__()。你也可以自己写一个类,然后里面定义内置方法__len__,就像我写的这个例子一样https://gist.github.com/devjuntu/04cb850c583789d93c06659e0519c986。

  • 不安分的coder

    慢慢的喜欢上了看书,以前第一想到的就是买视频看。希望老师接下的章节可以带来更大的惊喜。啦啦啦

    讲师回答 / Jarvinia

    光看书还不够,看代码才能学得更快。

正在加载中...

造烛求明,读书求理
扫码关注慕课网服务号
干货分享
定期活动
课程优惠
专栏福利
官方优惠福利活动一手掌握,关注慕课网(ID:imooc-com),和30万+程序员一起成长!

下载慕课网APP

更好的体验,让阅读随处可得

扫描二维码,下载慕课网APP
意见反馈 帮助中心 APP下载
官方微信