📜  Python中的类和实例属性

📅  最后修改于: 2020-04-07 12:02:42             🧑  作者: Mango

类属性

类属性属于类本身,它们将由所有实例共享。为了清晰起见,此类属性通常在顶部的类正文部分中定义。

# Python代码
class sampleclass:
    count = 0     # class attribute
    def increase(self):
        sampleclass.count += 1
# 对象上调用increase()
s1 = sampleclass()
s1.increase()
print s1.count
# 在另一个对象调用increase()
s2 = sampleclass()
s2.increase()
print s2.count
print sampleclass.count

输出:

1
2
2

对象属性

与类属性不同,实例属性不被对象共享。每个对象都有其实例属性的副本(对于类属性,所有对象均引用单个副本)。
要列出实例/对象的属性,我们有两个函数:
1. vars():此函数以字典的形式显示实例的属性。
2. dir():此函数显示的属性比vars函数更多,因为它不仅限于实例,它还显示类属性。

# Python展示对象属性.
class emp:
    def __init__(self):
        self.name = 'xyz'
        self.salary = 4000
    def show(self):
        print self.name
        print self.salary
e1 = emp()
print "字典 :", vars(e1)
print dir(e1)

输出:

字典 :{'salary': 4000, 'name': 'xyz'}
['__doc__', '__init__', '__module__', 'name', 'salary', 'show']