首页 > 代码库 > 翻译的破烂,艹
翻译的破烂,艹
初学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.y10 ‘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 3214 >>> 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.x11 11
我们几乎可以为所有对象添加属性
1 >>> def hello():2 return "Hello"3 4 >>> hello.abc_def = ‘hi there!‘5 >>> hello.abc_def6 ‘hi there!‘
翻译的破烂,艹
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。