如何向novi解释Python中的属性

2024-04-19 13:11:04 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能简单地解释一下Python语言中的属性是什么吗?你知道吗

比如我能说什么

list.append(x)

使用直观、简单的日常生活示例,在列表末尾添加一个对象?我发现属性描述了一个对象的属性,比如我头发的属性就是棕色和短发。你知道吗

很好,但如果是这样,list属性描述了append的什么属性?在list的末尾加上什么?我想说这是对list的操作,而不是它的属性。你知道吗

你能帮我澄清一下吗?你知道吗


Tags: 对象语言示例列表属性直观list末尾
3条回答

属性只是可以使用属性建模的一件事情。如您所说,添加到列表末尾的操作是另一种操作。这在Python中有一个相当直接的解释;因为函数是一级值,所以它们可以像任何其他类型一样存储为属性的值。这里,list.append只是一个函数,当调用它时,它会将它的参数添加到list的末尾。可以看出,调用函数的名称并不重要。以下行为相同:

  1. list.append(5)
  2. f = list.append; f(5)

在这两种情况下,使用参数5调用相同的绑定方法。你知道吗

在向学生介绍class和函数可以赋值给变量的想法之前,您可能会推迟解释。在这一点上,很明显方法是属性,就像存储值是属性一样。比较计数和碰撞

class Counter( object):
   def __init__( self, initial=0):
      self.count=initial
   def bump(self):
      self.count += 1
      print( "count = {0}".format( self.count) )

count是一个整数属性。bump是一个“绑定方法”属性(通常称为方法)。列表.append是另一个这样的属性。你知道吗

>>> d=Counter()
>>> d.bump()
count = 1
>>> d.bump
<bound method counter.bump of <__main__.counter object at 0x7fb5eb01db38>>
>>> d.count
1
>>> dir(d)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__',  '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__',
 'bump', 'count']

(特别是最后两个和你的__init__。其余的继承自对象)。你知道吗

或者,告诉他这是一个方法,不要(还)提到方法是一个属性。属性:附着到对象的数据。方法:附加到对象的函数(通常用于以某种方式操作附加的数据)。你知道吗

参见python documentation: 尤其是9.3.3。实例对象:有两种有效的属性名,数据属性和方法。你也会发现一些例子。 那么,为什么方法也被称为属性呢?对于某些方法,“属性”一词比其他方法更合适。 示例:

car.color()

这种方法可以返回汽车的颜色。你知道吗

把点后的词称为点前物体的属性,这只是一个定义和概括的问题。你知道吗

相关问题 更多 >