python attribute到底是属性,还是方法和属性的统称?

先说结论,我认为attribute是方法和属性的统称~~

  • setattr函数,从字面上理解似乎是设置attribute。attribute的翻译是属性,似乎这个函数就只能是设置属性呢?通过实践发现,实例方法也可以通过这个函数来改变。所以这里的attr不能理解为属性!换句话说这里的attribute不是我们平时所称的“属性和方法”中的“属性”!而是属性和方法的统称!类似的情况还出现hasattrgetattr等函数中。
def print_cat():
    print('I am cat!')

class Animal:
    def __init__(self):
        self.name = 'dog'
        self.sex = 'man'
    def print_name(self):
        print(f'I am {self.name}')

a = Animal()
a.print_name()
setattr(a, 'print_name', print_cat)
a.print_name()
# 输出结果
# I am dog
# I am cat!
  • emmm...,探讨这个意义到底是什么?意义就是希望自己能够清楚地认清attribute和属性的区别,时刻警惕很多文章中所提的“属性”到底是attribute还是属性?有些文章或者书本里面,会很容易搞混了属性、方法和attribute三者的关系,尤其是很多时候把attribute说成属性。导致很多时候看文章的时候都会深深的自我怀疑,这个函数真的只能修改属性吗?或者attribute应该分为"attribute变量"和"attribute函数"或许会更好一点。(相关的叫法在C++中貌似分别称为成员变量成员函数)但是把attribute分为属性和方法已经是约定俗称的事情了,不得不说,attribute和属性真的是很容易搞混!!orz

你可能感兴趣的:(python attribute到底是属性,还是方法和属性的统称?)