说明Class之前,先写一个Python中Class的代码:
为了便于理解,首先定义三个类:OldMan 、 YoungMan 、Lawyer,其中Lawyer“多继承”前两个类。大概就是律师处理爸爸留给儿子的财产。
Class中的属性分为:基本属性和私有属性,顾名思义,私有属性只能在当前类被使用,不能被其他类引用。比如OldMan中的名字和年龄__name __age,这是私有的,所以定义为私有属性(两个下划线),钱和车子则可以被继承,定为基本属性。
Class中的方法(也就是函数)分为:基本方法和私有方法,如律师中的__init__(self,name,age,unuseless)仅能在Lawyer类中使用。此外,__init__()是十分特殊的方法,当Class被调用时,它也会自动被调用。一般用来给Class做初始化作用。
Class中的方法(也就是函数),在Class内部一定要写self(实例名),因为Class直接指向内存,故一定要有实例名。在Class外部,对方法进行引用时,无需self。另外,对于方法中的参数,用多少就要写多少,可以多写(如Lawyer.__init__中的unseless参数,只是输入了,但是没有被使用)。
引用Class类时,输入的参数严格按照__init__中定义的参数来,比如a = Lawyer('太子',20,'45')。至于Lawyer方法中其它需要的参数,在引用该方法时再添加,如Lawyer.imformation('没什么用')。
***:Class引用时,可以直接改变其它Class中基本属性的值,如程序运行结果可见,YoungMan.money和YoungMan.cars,经过Lawyer.distribute之后,值被改变了。
#定义“爸爸类”
class OldMan:
__name = '皇帝'
__age = 90
money = 1000000000
cars = '林肯加长版'
def imformation(self):
print('被继承者(爸爸)的信息:')
print('姓名:{} , 年龄:{} , 钱:{} , 车子:{}'.format(self.__name,self.__age,self.money,self.cars))
#定义“儿子类”
class YoungMan:
__name = '太子'
__age = 20
money = 0
cars = '自行车'
def imformation(self):
print('继承者(儿子)的信息:')
print('姓名:{} , 年龄:{} , 钱:{} , 车子:{}'.format(self.__name,self.__age,self.money,self.cars))
#定义一个“律师类”:
class Lawyer(OldMan,YoungMan):
#律师要给他们分配财产,就要先继承OldMan和YoungMan的信息(财产)
cars = []
money = 0
def __init__(self,name,age,unuseless):
OldMan.__init__(self)
YoungMan.__init__(self)
self.name = '太子'
self.age = '20'
def imformation(self,test):
OldMan.imformation(self)
YoungMan.imformation(self)
def distribute(self):
YoungMan.cars = [YoungMan.cars]
YoungMan.cars.append(OldMan.cars)
self.cars = YoungMan.cars
self.money = OldMan.money+YoungMan.money
print('继承财产之后:')
print('姓名:{} , 年龄:{} , 钱:{} , 车子:{}'.format(self.name,self.age,self.money,self.cars))
YoungMan.imformation(self)
a = Lawyer('太子',20,'45')
a.imformation('没什么用')
a.distribute()
b = YoungMan()
b.imformation()
结果:
被继承者(爸爸)的信息:
姓名:皇帝 , 年龄:90 , 钱:0 , 车子:[]
继承者(儿子)的信息:
姓名:太子 , 年龄:20 , 钱:0 , 车子:[]
继承财产之后:
姓名:太子 , 年龄:20 , 钱:1000000000 , 车子:['自行车', '林肯加长版']
继承者(儿子)的信息:
姓名:太子 , 年龄:20 , 钱:1000000000 , 车子:['自行车', '林肯加长版']
继承者(儿子)的信息:
姓名:太子 , 年龄:20 , 钱:0 , 车子:['自行车', '林肯加长版']
我觉得,目前掌握到这种程度,对于一些简单的面向对象编程,够用了,其它的日后深入