免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5712 | 回复: 7
打印 上一主题 下一主题

python学到类了,各种理解不了啊,求推荐好的资料 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-13 15:14 |只看该作者 |倒序浏览
  1. class TheThing(object):

  2.         def __init__(self):
  3.                 self.number = 0

  4.         def some_function(self):
  5.                 print "I got called."

  6.         def add_me_up(self,more):
  7.                 self.number += more
  8.                 return self.number
  9. #print self.number
  10. a = TheThing()
  11. b = TheThing()

  12. a.some_function()
  13. b.some_function()

  14. print a.add_me_up(20)
  15. print b.add_me_up(30)

  16. print a.number
  17. print b.number

  18. class TheMultiplier(object):

  19.         def  __init__(self,base):
  20.                 self.base = base

  21.         def do_it(self,m):
  22.                 return m * self.base

  23. x = TheMultiplier(a.number)
  24. print x.do_it(b.number)
复制代码
#def __init__(self),这个函数想不明白

论坛徽章:
0
2 [报告]
发表于 2013-09-13 16:22 |只看该作者
初始化函数,属内部函数,创建类对象的时候自动执行。

论坛徽章:
0
3 [报告]
发表于 2013-09-13 17:38 |只看该作者

论坛徽章:
0
4 [报告]
发表于 2013-09-13 17:41 |只看该作者
你可以把理解成构造函数。

论坛徽章:
1
水瓶座
日期:2013-11-04 13:16:13
5 [报告]
发表于 2013-09-16 10:17 |只看该作者
构造函数~ ,其实你可以这么理解,工厂造汽车首先都会有汽车的蓝图,各个零件,这个汽车蓝图就是类对象,也就是class ,汽车都有轮胎,方向盘,发动机,驾驶位置等,每个汽车都有这些属性,所以我们要对class这个类定义一个函数,保证汽车在制造的时候都有这些属性(构造函数),就这么理解构造函数吧~  也就是对象在被实例化的时候第一个执行的函数,将默认属性赋值给对象

论坛徽章:
0
6 [报告]
发表于 2013-09-16 15:06 |只看该作者
看看这个
#coding:utf-8
"""
本代码由python远程培训班和周末班培训班授课老师黄哥所写。
__new__和__init__到底是怎么一回事,看下面的代码
如果类没有定义__new__方法,就从父类继承这个__new__方法。
__new__先于__init__执行,类带括号调用时,发生这样的一件事,
先调用类的__new__方法,放回该类的实例对象,这个实例对象就是__init__方法的第一个参数。
请看代码中tmp,self,p的内存地址都是一样的,都是类的实例对象。
python培训周末班第三期招生
咨询:qq:1465376564 电话:010-68165761
http://www.qy7788.com.cn/shiyongxinxi/shiyongxinxi210.html
"""

class Foo(object):
    def __new__(cls, *args, **kwargs):
        """如果不覆盖这个__new__方法,也就是说不写这个__new__方法,类会从object
        继承__new__方法完成返回值实例对象
        """
        print "__new__方法先被调用"
        tmp = super(Foo,cls).__new__(cls,*args, **kwargs)
        print id(tmp)
        print type(tmp)
        print isinstance(tmp,Foo)
        print issubclass(type(tmp),Foo)
        return tmp

    def __init__(self):
        """self是python默认传的值,该值是调用__new__的返回值"""
        print "__init__被调用"
        print id(self)


p = Foo()
print id(p)
print type(p)

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每月发帖之星
日期:2015-09-11 19:30:52IT运维版块每周发帖之星
日期:2015-09-11 19:20:31IT运维版块每日发帖之星
日期:2015-08-26 06:20:00每日论坛发贴之星
日期:2015-08-20 06:20:00IT运维版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
7 [报告]
发表于 2013-09-16 21:57 |只看该作者
看milou的视频

论坛徽章:
0
8 [报告]
发表于 2013-09-23 09:41 |只看该作者
你可以参考一下这个,希望可以帮到你!!http://blog.chinaunix.net/uid-29127275-id-3899264.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP