13.Python构造和析构

1.

>>> class Rectangle:
	def __init__(self,x,y):
		self.x=x
		self.y=y
	def getPeri(self):
		return (self.x+self.y)*2
	def getArea(self):
		return self.x*self.y

	
>>> rec=Rectangle(3,4)
>>> rec.getPeri()
14
>>> rec.getArea()
12
>>> 

2.在类中的自定义__init__方法,默认返回值为None

>>> class A:
	def __init__(self):
		return 'hahhah'

	
>>> a=A()
Traceback (most recent call last):
  File "", line 1, in 
    a=A()
TypeError: __init__() should return None, not 'str'
>>> 

3.__new__(cls[,...])方法:  需要实例化一个对象作为返回值,通常返回cls的实例对象

a.cls[,...]是一个类,如果有参数,会传到__init__方法中。

>>> class CapStr(str):#继承str
	def __new__(cls,string):   
		string=string.upper() #变成大写字母
		return str.__new__(cls,string)

	
>>> a=CapStr('i love you')
>>> a
'I LOVE YOU'
>>> 

4.__del__(self):析构器,垃圾回收机制自动调用此方法

a.当对象将要被销毁的时候,方法被自动调用
 

>>> class A:
	def __init__(self):
		print('我是__init__方法,我被调用了')
	def __del__(self):
		print('我是__del__方法,我被调用了')

		
>>> a=A()
我是__init__方法,我被调用了
>>> a1=a #变量的赋值
>>> a2=a1
>>> del a2
>>> del a1
>>> del a
我是__del__方法,我被调用了
>>> 

所有引用被del后才会调用此方法

你可能感兴趣的:(python)