如何向新手解释Python中的属性
有人能简单地解释一下Python语言中的属性是什么吗 例如,我能说些什么如何向新手解释Python中的属性,python,attributes,Python,Attributes,有人能简单地解释一下Python语言中的属性是什么吗 例如,我能说些什么 list.append(x) 使用直观、简单的日常生活示例,在列表末尾添加一个对象?我发现属性描述了一个对象的属性,例如,我头发的属性是棕色和短发 很好,但是如果是这样,append属性描述了list的哪些属性?在列表的末尾添加一些内容?我想说这是对列表的操作,而不是它的属性 你能帮我澄清一下吗?属性只是可以使用属性建模的一个东西。正如您所说,添加到列表末尾的操作是另一个类似的操作。这在Python中有一个相当简单的解释
list.append(x)
使用直观、简单的日常生活示例,在列表末尾添加一个对象?我发现属性描述了一个对象的属性,例如,我头发的属性是棕色和短发
很好,但是如果是这样,append
属性描述了list
的哪些属性?在列表的末尾添加一些内容
?我想说这是对列表的操作,而不是它的属性
你能帮我澄清一下吗?属性只是可以使用属性建模的一个东西。正如您所说,添加到列表末尾的操作是另一个类似的操作。这在Python中有一个相当简单的解释;由于函数是一级值,它们可以像任何其他类型一样存储为属性值。这里,list.append
只是一个函数,当调用它时,它会将参数添加到list
的末尾。可以看出,调用函数的名称并不重要。以下行为相同:
list.append(5)
f=list.append;f(5)
在这两种情况下,使用参数5调用相同的绑定方法。属性只是可以使用属性建模的一件事。正如您所说,添加到列表末尾的操作是另一个类似的操作。这在Python中有一个相当简单的解释;由于函数是一级值,它们可以像任何其他类型一样存储为属性值。这里,list.append
只是一个函数,当调用它时,它会将参数添加到list
的末尾。可以看出,调用函数的名称并不重要。以下行为相同:
list.append(5)
f=list.append;f(5)
在这两种情况下,使用参数5调用相同的绑定方法。请参见:
尤其是9.3.3。实例对象:有两种有效的属性名称,数据属性和方法。你也会发现这些例子。
那么,为什么方法也被称为属性呢?对于某些方法,“属性”一词比其他方法更合适。
例如:
此方法可以返回汽车的颜色
就定义和概括而言,点后的单词称为点前对象的属性。参见:
尤其是9.3.3。实例对象:有两种有效的属性名称,数据属性和方法。你也会发现这些例子。
那么,为什么方法也被称为属性呢?对于某些方法,“属性”一词比其他方法更合适。
例如:
此方法可以返回汽车的颜色
将点后的单词称为点前对象的属性作为定义和泛化的问题。你可能会推迟解释,直到你向你的学生介绍了类以及函数可以分配给变量的想法,就像可以分配数字或数据结构一样。在这一点上,很明显,方法是一个属性,就像存储值是一个属性一样。比较计数和碰撞
class Counter( object):
def __init__( self, initial=0):
self.count=initial
def bump(self):
self.count += 1
print( "count = {0}".format( self.count) )
count是一个整数属性。凹凸是一个“绑定方法”属性(通常称为方法)。list.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']
>d=计数器()
>>>d.bump()
计数=1
>>>d.通气
>>>d.伯爵
1.
>>>署长(丁)
“UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU新的、新的、减少的、减少的、报告的、设置的、大小的、结构的、子类的,
“碰撞”,“计数”]
(特别是最后两个和您的\uuuuu init\uuuu
。其余的都是从对象继承的)
或者,告诉他这是一个方法,不要(还)提到方法是一个属性。属性:附着到对象的数据。方法:附加到对象的函数(通常用于以某种方式操作附加的数据) 你可能会推迟解释,直到你向你的学生介绍了类以及函数可以分配给变量的想法,就像分配数字或数据结构一样。在这一点上,很明显,方法是一个属性,就像存储值是一个属性一样。比较计数和碰撞
class Counter( object):
def __init__( self, initial=0):
self.count=initial
def bump(self):
self.count += 1
print( "count = {0}".format( self.count) )
count是一个整数属性。凹凸是一个“绑定方法”属性(通常称为方法)。list.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']
>d=计数器()
>>>d.bump()
计数=1
>>>d.通气
>>>d.伯爵
1.
>>>署长(丁)
“UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU新的、新的、减少的、减少的、报告的、设置的、大小的、结构的、子类的,
“碰撞”,“计数”]
(特别是最后两个和您的\uuuuu init\uuuu
。其余的都是从对象继承的)
或者,告诉他这是一个方法,不要(还)提到方法是一个属性。属性:附着到对象的数据。方法:附加到对象的函数(通常用于以某种方式操作附加的数据) 例如,append
等实例方法是一种行为,你的头发可能会生长
。因此,不要使用术语“属性”来描述更好的“方法”。为一个方法找到一个新的“现实生活”类比,而不是尝试使用与属性相同的类比