一、类的定义:
语法格式:
class A:
	a = 10
一般地,类名的首字母以大写形式命名,属性引用的方法:obj.name。
二、类的构造:即(c++类的构造函数)
语法格式:
def __init__(self):
    self.t = []
当类实例化一个对象时,则会自动调用_init_函数进行对象的初始化,该构造函数还可以带有参数,使用情况与c++构造函数基本一致,且无法返回任何值。
三、类中的self:
类中的函数与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称self。
 它的意义是:代表当前对象的地址,且self不是python中的关键字,self.class 指向类,self就像c++中的this指针。
 简单记住,每个在类中的函数第一个参数记得写上self即可。
四、类中的私有公有:
私有属性:在变量名或函数名前,加上两底横线,__,即可。
 公有属性:所有不加__的都默认为公有属性
 例子:
class A:
	__a = 10  #__a为私有属性,类外无法调用它
	b = 12	  #b为公有属性,类外可以调用它
五、类的继承:
python中的类也支持继承,派生类的定义格式:
class A:
	a = [1,2,3,4]
class B(A):  #创建新类B 继承于类A
	b = 10
print(A.a)	# [1,2,3,4]
print(B.a)  # [1,2,3,4]
在python类的继承中,若子类写了与父类同名函数,则会默认将子类的方法覆盖掉父类的方法。
 所以,在子类中写构造函数的时候,记得在子类构造函数中实现父类的构造。
class A:
	def __init__ (self):
		self.x = 10
		self.y = 15
class B(A):  #创建新类B 继承于类A
	def __init__(self):
	    A.__init__(self)	#调用父类的构造函数
	#可以使用super函数,则不需要给定基类名字,格式:super().__init__()
	    self.b = 5
	    self.a = 10
a1 = A()
b1 = B()
print(a1.x)	# 10
print(b1.x)  # 10
python支持类的多重继承,只需要在括号加上多个所要继承的类即可:
class C:
	c = [1,3,4]
class A:
	a = [1,2,3,4]
class B(A,C):  #创建新类B 继承于类A和类C
	b = 10
a1 = A()
c1 = C()
b1 = B()
print(a1.a)	# [1,2,3,4]
print(c1.c)  # [1,2,3,4]
print(b1.c)  # [1,3,4]
六、面向对象常用内置函数:
1.issubclass(class, classinfo) :左参数为需要判断的类,右参数为所判断的类是否所属的父类,右边可以为元组形式。
 2.isinstance(object, classinfo):检查实例对象是否属于一个类,object为一个实例对象,calssinfo为判断是否所属的类,右边可以为元组形式。
 3.hasattr(object, attribute):判断attribute属性是否在object实例对象中。
 4.getattr(object,name[,default]):返回属性,若无则默认返回default。
 5.setattr(object, name, value):可以为对象的某一个属性赋值,object代表对象,name代表属性名,value为值,若对象中没有该属性,则自动生成赋值为value的名字为name的属性。
 6.delattr(object, name):在对象object中删除名字为name的属性。
 7.property(fget = none, fset = none, fdel = none):可以通过属性设置属性。例子:
class A:
	def __init__(self,size):
		sefl.size = size
	def getsize(self):
		return self.size
	def setsize(self,value):
		self.size = value
	def delsize(self):
		del self.size
	x = property(getsize, setsize, delsize)
a = A() 
a.x = 5      #相当于调用了setsize
a.x			 #相当于调用了getsize
del a.x	     #相当于调用了delsize
print(a.x)   #无法打印
七、析构函数:
语法格式:
class A:
	def __init__ (self):
		print("我是构造函数")
	def __del__(self):
		print("我是析构函数")
作用:销毁对象
 注意:若有多个对象的引用,则需要将所有引用del后,它才会调用。
七、类中的专有方法:
1.__init__
 构造函数,上面已讲过。
 2.__new__
 在init初始化类实例化对象之前,实际上类中还自动调用了类对象的new方法创建一个实例化对象,一般地object类有一个__new__方法,该方法接收一个参数(一般为类对象),将该参数进行实例化并返回一个对象, 平时需要我们自定义new方法的情况很少,但若你继承一些不可变的类时,可以自定义new方法实现改变。
 例子:
class Change(int):
  def __new__(cls, value):
    return super(Change, cls).__new__(cls, abs(value))
i = Change(-3)
print i
3.运算符重载:
 以下全部记得函数名左右有两杠下划线:
 (1)add(self,other):重新定义加法+。
 (2)sub(self,other):重新定义减法-。
 (3)mul(self,other):重新定义乘法。
 (4)truediv(self,other):重新定义真除法/。
 (5)floordiv(self,other):重新定义整数除法//。
 (6)pow(self,other):重新定义pow()的调用或幂计算。
 (7)lshift(self,other):重新定义<<。
 (8)rshift(self,other):重新定义>>。
 (9)and(self,other):重新定义按位与:&
 (10)xor(self,other):重新定义按位异或:^
 (11)or(self,other):重新定义按位或:|
 使用方法:与c++中的运算符重载用法类似。
 还有个中增量运算符重载,具体自行百度或谷歌。
转载:https://blog.csdn.net/uGamemaster/article/details/104715822
