python类中的构造函数和析构函数
class Employee: count=0 #构造函数 def __init__(self,name,salary): self.name=name self.salary=salary Employee.count=Employee.count+1 #析构函数 def __del__(self): print("over") def dispaly(self): print("姓名:"+self.name) e=Employee("wanghuaiyu",5) e.dispaly()
你也可以使用以下函数的方式来访问属性:
- getattr(obj, name[, default]) : 访问对象的属性。
- hasattr(obj,name) : 检查是否存在一个属性。
- setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。
- delattr(obj, name) : 删除属性。
简单的类级继承
class People: #构造函数 def __init__(self,name): self.name=name print("父类构造方法") #析构函数 def __del__(self): print("over") def dispalyName(self): print("姓名:"+self.name) class student(People): def __init__(self,name,age): People.__init__(self,name) self.age=age print("子类构造方法") def showAge(self): print(self.age) p=student("wanghuaiyu",16) p.dispalyName() p.showAge()
类的属性与方法
class People: #构造函数(__init__属于特殊方法 #_加变量是protected类型 _age=10 def __init__(self,name): #__加变量是private类型 self.__name=name print("父类构造方法")
特殊的属性与方法
(1)__slots__:该属性是一个保存字符串的元组,使用该属性后我们只能添加该类__slots__中包含的属性和函数
#未使用,此时代码正常 class People: pass p=People() p.name="wanghuaiyu" p.age=20 #使用后,此时最后一行报错因为__slots__中没有age属性 class People: __slots__ = ('name') p=People() p.name="wanghuaiyu" p.age=20
(2)__str()__(self):函数返回一个字符串
class People: __slots__ = ('name','age') def __str__(self): return "wanghuaiyu:%d"%self.age p=People() p.name="wanghuaiyu" p.age=20 print(p.__str__())