python禅语_LPTHW 笨办法学python 40章 类

今天读了LPTHW的第40章以后豁然开朗,原来一直愚钝,不太理解类的定义和使用,还有就是不太理解关于self的定义。

classMyStuff(object):def __init__(self):

self.tangerine= "And now a thousand years between"

defapple(self):print "I AM CLASSY APPLES!"

说类和迷你模块差不多,那么对于类来说,也必然有一个类似 import 的概念。这个概念名称就是

“实例(instance)”。这只是一种故作高深的叫法而已,它的意思其实是“创建”。当你将一个类“实例

化”以后,你就得到了一个 对象(object) 。

实现实例化的方法,就是像调用函数一样地调用一个类:

thing = MyStuff()

thing.apple()

print thing.tangerine

为什么创建 __init__或者别的类函数时需要多加一个 self 变量?

如果你不加 self , cheese= 'Frank'这样的代码意义就不明确了,它指的既可能

是实例的 cheese 属性,或者一个叫做 cheese 的局部变量。有了 self.cheese=

'Frank' 你就清楚地知道了这指的是实例的属性 self.cheese 。

不太理解类继承中的关于super的定义。

看了网上的评论越看越糊涂。

关于类的继承,从属我看了段天书。

有一个重要的概念你需要弄明白,那就是“类(class)”和“对象(object)”的区别。问题在于,class 和

object 并没有真正的不同。它们其实是同样的东西,只是在不同的时间名字不同罢了。我用禅语来解释

一下吧:

鱼和泥鳅有什么区别?

这个问题有没有让你有点晕呢?说真的,坐下来想一分钟。我的意思是说,鱼和泥鳅是不一样,不过它

们其实也是一样的是不是?泥鳅是鱼的一种,所以说没什么不同,不过泥鳅又有些特别,它和别的种类

的鱼的确不一样,比如泥鳅和黄鳝就不一样。所以泥鳅和鱼既相同又不同。怪了。

这个问题让人晕的原因是大部分人不会这样去思考问题,其实每个人都懂这一点,你无须去思考鱼和泥

鳅的区别,因为你知道它们之间的关系。你知道泥鳅是鱼的一种,而且鱼还有别的种类,根本就没必要

去思考这类问题。

让我们更进一步,假设你有一只水桶,里边有三条泥鳅。假设你的好人卡多到没地方用,于是你给它们

分别取名叫小方,小斌,小星。现在想想这个问题:

小方和泥鳅有什么区别?

这个问题一样的奇怪,但比起鱼和泥鳅的问题来还好点。你知道小方是一条泥鳅,所以他并没什么不同,

他只是泥鳅的一个“实例(instance)”。小斌和小星一样也是泥鳅的实例。我的意思是说,它们是由泥鳅

创建出来的,而且代表着和泥鳅一样的属性。

所以我们的思维方式是(你可能会有点不习惯):鱼是一个“类(class)”,泥鳅是一个“类(class)”,而

小方是一个“对象(object)”。仔细想想,然后我再一点一点慢慢解释给你。

鱼是一个“类”,表示它不是一个真正的东西,而是一个用来描述具有同类属性的实例的概括性词汇。

你有鳍?你有鳔?你住在水里?好吧那你就是一条鱼。

后来河蟹养殖专家路过,看到你的水桶,于是告诉你:“小伙子,你这些鱼是泥鳅。” 专家一出,真相

即现。并且专家还定义了一个新的叫做“泥鳅”的“类”,而这个“类”又有它特定的属性。细长条?

有胡须?爱钻泥巴?吃起来味道还可以?那你就是一条泥鳅。

最后家庭煮父过来了,他跟河蟹专家说:“非也非也,你看到的是泥鳅,我看到的是小方,而且我要把

小方和剁椒配一起做一道小菜。”于是你就有了一只叫做小方的泥鳅的“实例(instance)”(泥鳅也是鱼

的一个“实例”),并且你使用了它(把它塞到你的胃里了),这样它就是一个“对象(object)”。

这会你应该了解了:小方是泥鳅的成员,而泥鳅又是鱼的成员。这里的关系式:对象属于某个类,而某

个类又属于另一个类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值