Python 类属性
每个Python类都保留以下内置属性,并且可以使用点运算符访问,就像访问任何其他属性一样:
__dict__
- 包含类的命名空间的字典。-
__doc__
- 类的文档字符串,如果未定义则为None。 -
__name__
- 类名。 -
__module__
- 定义类的模块名称。在交互模式下,此属性为”__main__
“。 -
__bases__
- 可能是空的元组,包含基类的顺序。
对于上面的类,让我们尝试访问所有这些属性:
class Employee:
def __init__(self, name="Bhavana", age=24):
self.name = name
self.age = age
def displayEmployee(self):
print ("Name : ", self.name, ", age: ", self.age)
print ("Employee.__doc__:", Employee.__doc__)
print ("Employee.__name__:", Employee.__name__)
print ("Employee.__module__:", Employee.__module__)
print ("Employee.__bases__:", Employee.__bases__)
print ("Employee.__dict__:", Employee.__dict__ )
它将产生以下 输出 −
Employee.__doc__: None
Employee.__name__: Employee
Employee.__module__: __main__
Employee.__bases__: (<class 'object'>,)
Employee.__dict__: {'__module__': '__main__', '__init__': <function Employee.__init__ at 0x0000022F866B8B80>, 'displayEmployee': <function Employee.displayEmployee at 0x0000022F866B9760>, '__dict__': <attribute '__dict__' of 'Employee' objects>, '__weakref__': <attribute '__weakref__' of 'Employee' objects>, '__doc__': None}
类变量
在上面的Employee类示例中,name和age是实例变量,因为它们的值可能对每个对象都不同。一个类属性或变量,其值在这个类的所有实例之间共享。类属性表示类的所有对象的通用属性。
类属性不在__init__()
构造函数中初始化。它们在类中定义,但在任何方法之外。除了对象,它们还可以通过类名访问。换句话说,类属性对类和它的对象都可用。
示例
让我们在Employee类中添加一个名为empCount的类变量。对于每个声明的对象,__init__()
方法会自动调用。这个方法不仅初始化实例变量,还将empCount增加1。
class Employee:
empCount = 0
def __init__(self, name, age):
self.__name = name
self.__age = age
Employee.empCount += 1
print ("Name: ", self.__name, "Age: ", self.__age)
print ("Employee Number:", Employee.empCount)
e1 = Employee("Bhavana", 24)
e2 = Employee("Rajesh", 26)
e3 = Employee("John", 27)
输出
我们声明了三个对象。每次, empCount 增加1。
Name: Bhavana Age: 24
Employee Number: 1
Name: Rajesh Age: 26
Employee Number: 2
Name: John Age: 27
Employee Number: 3