python编程基础之三十三
构造方法:
-
-
触发时机:实例化对象的时候自动调用
-
参数:第一个参数必须是self,其它参数根据需要自己定义
-
返回值:不返回值,或者说返回None,不应该返回任何其他值
1 def __init__(self,arg1,arg2....): 2 函数体 3 #参数:arg1,agr2...根据需要自己定义 4 #如果自己不定义构造方法,系统自动生成一个构造函数 5 def __init__(self): 6 pass
如果自己没有写构造方法,系统会自动生成一个构造方法,里面除了self,没有任何参数,
1 class Dog(object): 2 def __init__(self,name,kind,age): 3 self.name = name #定义对象属性,这个类所有的对象都具有该属性 4 self.kind = kind #成员属性必须通过self.引用,否则是普通变量 5 self.age = age 6 7 def bark(tmp): 8 print('我是小可爱') 9 10 dingding = Dog('大黄','泰迪',3) 11 print('我是可爱的%s犬,%s,我今年%d岁了' % (dingding.kind, dingding.name, dingding.age))
析构方法:
-
-
时机:对象销毁时由系统自动调用
-
参数:除了self外,没有其他参数
-
返回值:不返回值,或者说返回None。
1 def __del__(self): 2 #to do
1 class Dog(object): 2 #构造 3 def __init__(self,name,kind,age): 4 self.name = name 5 self.kind = kind 6 self.age = age 7 #析构 8 def __del__(self): 9 print('拜拜了,二十年后又是一条好汉') 10 def bark(tmp): 11 print('我是小可爱--丁丁') 12 13 dingding = Dog('丁丁','泰迪',3) 14 print('我是可爱的%s犬,%s,我今年%d岁了' % (dingding.kind, dingding.name, dingding.age)) 15 del dingding #销毁对象,自动调用析构方法 16 17 #在函数中对象,当函数结束运行时,自动析构 18 def test(): 19 td = Dog('当当','泰迪',3)
还介绍一个魔术方法比较常用:__str__()
这个魔术方法可以让你定义的对象输出的时候不会是一个地址了,看到的可以是你希望看到的字符串,
-
-
时机:凡是涉及对象向字符串转换的都会调用
-
参数:self
-
返回值:字符串
1 class Animal: 2 def __init__(self,name,age): 3 self.name = name 4 self.__age =age 5 def __str__(self): 6 return "name : {} age : {}".format(self.name,self.__age) 7 def __repr__(self): 8 return self.__str__() 9 a1 = Animal('zhu',3) 10 print(a1) 11 print('我是一头可爱的 ' + str(a1)