python中方法和属性之间的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中方法和属性之间的区别相关的知识,希望对你有一定的参考价值。

我正在学习python并对类进行练习。它告诉我将nd属性添加到我的类中,并将方法添加到我的类中。在我阅读练习之前,我一直以为这些都是一样的。两者有什么区别?

答案

术语

心理模型:

  • 存储在实例或类中的变量称为attribute
  • 存储在实例或类中的函数称为method

根据Python的词汇表:

attribute:与使用虚线表达式按名称引用的对象关联的值。例如,如果对象o具有属性a,则它将被引用为o.a.

method:在类体内定义的函数。如果作为该类实例的属性调用,该方法将获取实例对象作为其第一个参数(通常称为self)。请参阅函数和嵌套范围。

例子

应用于实际代码的术语:

a = 10                          # variable

def f(b):                       # function  
    return b ** 2

class C:

    c = 20                      # class attribute

    def __init__(self, d):      # "dunder" method
        self.d = d              # instance attribute

    def show(self):             # method
        print(self.c, self.d) 

e = C(30)
e.g = 40                        # another instance variable
另一答案

方法是属性,但并非所有属性都是方法。例如,如果我们有班级

class MyClass(object):

    class_name = 'My Class'

    def my_method(self):
        print('Hello World!')

这个类有两个属性,class_namemy_method。但只有my_method是一种方法。方法是属于您的对象的函数。所有课程都有其他隐藏属性,但这正是您的练习可能讨论的内容。

另一答案

方法是类中定义的函数。属性是类中定义的实例变量。

例:

class Example(object):
    def __init__(self, name):
        self.name = name
    def hello(self):
        print 'Hi, I am ' + self.name

这里hello是一种方法,而name是一种属性。

以上是关于python中方法和属性之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

这两个代码片段之间有区别吗?如果有,那又如何? [复制]

字符串插值和片段之间有啥显着区别吗?

python中静态方法类方法属性方法区别

30 段 Python 实用代码

活动和片段之间有啥区别?

python中函数和方法的区别