#-*- coding:utf-8 -*-
#创建类
class Employee:
'Common base class for all employees'
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print ("Total Employee %d" % Employee.empCount)
def displayEmployee(self):
print ("Name : ",self.name, ", Salary: ",self.salary)
#创建实例对象
#要创建类的实例,可以使用类名调用该类,并传递其__init__方法接受的任何参数。
emp1 = Employee("Maxsu", 2000)
emp2 = Employee("Kobe", 5000)
#访问属性
#可以使用带有对象的点(.)运算符来访问对象的属性。
emp1.displayEmployee()
emp2.displayEmployee()
print ("Total Employee %d" % Employee.empCount)
#可以随时添加,删除或修改类和对象的属性
emp1.salary = 7000 # Add an 'salary' attribute.
emp1.name = 'xyz' # Modify 'age' attribute.
#del emp1.salary # Delete 'age' attribute.
emp1.displayEmployee()
'''
如果不是使用普通语句访问属性,可以使用以下函数 -
getattr(obj,name [,default]) - 访问对象的属性。
hasattr(obj,name) - 检查属性是否存在。
setattr(obj,name,value) - 设置一个属性。如果属性不存在,那么它将被创建。
delattr(obj,name) - 删除一个属性。
'''
a = getattr(emp1,'salary')
delattr(emp1,'salary')
b = hasattr(emp1,'salary')
print a,b #7000 False
setattr(emp1,'salary',8000)
emp1.displayEmployee()
#内置类属性
'''
每个Python类保持以下内置属性,并且可以像任何其他属性一样使用点运算符访问它们 -
__dict__ - 包含该类的命名空间的字典。
__doc__ - 类文档字符串或无,如果未定义。
__name__ - 类名。
__module__ - 定义类的模块名称。此属性在交互模式下的值为“main”。
__bases__ - 一个包含基类的空元组,按照它们在基类列表中出现的顺序。
'''
print("Employee.__dict__ :",Employee.__dict__)
print("Employee.__doc__ :",Employee.__doc__)
print("Employee.__name__ :",Employee.__name__)
print("Employee.__module__ :",Employee.__module__)
print("Employee.__bases__ :",Employee.__bases__)
'''
销毁对象(垃圾收集)
Python自动删除不需要的对象(内置类型或类实例)以释放内存空间。 Python定期回收不再使用的内存块的过程称为垃圾收集。
Python的垃圾收集器在程序执行期间运行,当对象的引用计数达到零时触发。 对象的引用计数随着指向它的别名数量而变化。
当对象的引用计数被分配一个新名称或放置在容器(列表,元组或字典)中时,它的引用计数会增加。 当用del删除对象的引用计
数时,引用计数减少,其引用被重新分配,或者其引用超出范围。 当对象的引用计数达到零时,Python会自动收集它。
'''
#通常情况下,垃圾回收器会销毁孤立的实例并回收其空间。 但是,类可以实现调用析构函数的特殊方法__del__(),该方法在实例即
#将被销毁时被调用。 此方法可能用于清理实例使用的任何非内存资源。
python 类 函数 的基本操作 以及 垃圾回收机制
最新推荐文章于 2024-05-25 00:41:32 发布