码迷,mamicode.com
首页 > 其他好文 > 详细

翻译的破烂,艹

时间:2014-10-18 22:18:13      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   sp   div   on   log   ad   

初学Python的时候,是不是很惊讶原来写一个类是如此的容易,不如:

1 class Foo():
2     pass

这是一个完美有效(没什么作用)的类,我们可以创建这个类的实例对象。

1 f = Foo()

这是一个Foo的实例对象,我们来查查它的身份,原来是Foo的一个实例

1 >>>type(f)
2 <class __main__.Foo>

f是一个完美有效,合理的Foo实例对象,但是没有实际作用。很多由其它编程语言转到python的人想知道如何去定义实例变量。通过写__init__方法,这个方法会在一个新对象创建时被执行。例如:

 1 class Foo(object):
 2     def __init__(slef, x, y):
 3         self.x = x
 4         self.y = y
 5 
 6 >>> f = Foo(100, abc)
 7 >>> f.x
 8 100
 9 >>> f.y
10 abc

表面上看我们定义了Foo实例对象f的两个变量x和y,它的表现的就是这样,大多数pythoner也这样认为如此。

那到底是不是这样呢?我只能说早点停止思考实例的变量和类的变量,你就会早点python是如何工作的。

为什么对象是这么工作的,它做了什么?在python里面实例变量和类变量是如何存在的?

属性是对象的基本成分,不对,应该说在python里面所有的基本组成。

每个对象都有属性。你可以通过"dir"内建函数查看。

 1 >>> s = acb
 2 >>> len(dir(s))
 3 71
 4 >>> dir(s)[:5]
 5 [__add__, __class__, __contains__, __delattr__, __doc__]
 6 >>> i = 123
 7 >>> len(dir(i))
 8 64
 9 >>> dir(i)[:5]
10 [__abs__, __add__, __and__, __class__, __cmp__]
11 >>> t = (1,2,3)
12 >>> len(dir(t))
13 32
14 >>> dir(t)[:5]
15 [__add__, __class__, __contains__, __delattr__, __doc__]
16 >>> 

我们要如何去使用这些属性?可以通过 getattr(t, ‘__class__‘)

1 >>> getattr(t, __class__)
2 <type tuple>
3 #等同于,操作更加方便
4 >>> t.__class__
5 <type tuple>

设置一个属性

 1 >>> f = Foo(100,abc)
 2 >>> f
 3 <__main__.Foo object at 0x0130DDF0>
 4 >>> setattr(f, x, 5)  #设置一个属性
 5 >>> getattr(f, x)
 6 5
 7 >>> f.x
 8 5
 9 >>> f.x = 11 #这个方法更加方便
10 >>> f.x
11 11

我们几乎可以为所有对象添加属性

1 >>> def hello():
2     return "Hello"
3 
4 >>> hello.abc_def = hi there!
5 >>> hello.abc_def
6 hi there!

 

翻译的破烂,艹

标签:style   blog   color   使用   sp   div   on   log   ad   

原文地址:http://www.cnblogs.com/jypwn/p/4033682.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!