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

问题描述 投票:3回答:3

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

python class oop methods attributes
3个回答
3
投票

术语

心理模型:

  • 存储在实例或类中的变量称为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

2
投票

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

class MyClass(object):

    class_name = 'My Class'

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

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


0
投票

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

例:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.