17.面向对象的写法
面向对象:
我这里做几个重要的知识点归纳起来:
1.创建单个类和多个类
2.初始化类
3.类里面函数的调用以及参数传递
4.类模块封装的调用
关于类的介绍:
1.物有属性 其相同具有的属性归为类
在我们的认知中为什么能很快的区分鸡和鸭呢?
是因为我们在意识里已经对他们分类了,我们认为鸡有鸡冠,不能游泳,而鸭没有这两项功能,我们二者区分开来。
2.父类与子类
这两者就像爸爸跟儿子的关系,俺爸生了你,那么你就会遗传俺爸的基因,简而言之,就是你们俩会具备某些一致的
东西,在程序里的思维也是这样,子类在遗传父类的过程中叫‘继承’
我们在代码中来看看实现方式:
class Test(object): def __init__(self): pass print('我是最大的Test类') def main(): t = Test() print(t) if __name__ == '__main__': main()
将这段代码拆分为三段:
1.标准的开始程序的写法:if__name__ == '__main__':
2.调用main()函数
3.将类付给变量t,那么t就可以使用类了
4.class + 类名 注意:类名首字母必须大写,括号内参数object代表他已经是尽头的类了,他没有父类了。如果没有object那就说明他还有父类
5.def __init__(self): 类的初始化,在这里没有对初始化做什么操作。
再看一些例子:
class Test(object): def __init__(self): self.test1 = '我具备test1功能' self.test2 = '我具备test2功能' self.test3 = '我具备test3功能' def function1(self): print(self.test1) print(self.test2) print(self.test3) def main(): t = Test() t.function1() if __name__ == '__main__': main()
这里做了一些简单的初始化操作:
一个尽头Test类具备test1 test2 test3 的功能
将类赋给变量t,那么t就可以使用‘t.函数名’的方法来调用函数了。
再看一下继承的实现:
test1 = '具备test1功能' test2 = '具备test2功能' test3 = '具备test3功能' a = '具备新增的A功能' class Test(object): def __init__(self,test1,test2,test3): self.test1 = test1 self.test2 = test2 self.test3 = test3 class Test1(Test): def __init__(self): self.testA = a super(Test1, self).__init__(test1,test2,test3) def function(self): print('我是Test的子类Test1:',test1,test2,test3) print('我还额外',a) def main(): t = Test1() t.function() if __name__ == '__main__': main()
在子类Test1中初始化Test父类,继承它所具备的的功能
与此同时,你的子类也可以额外新增功能。
除了在一个父类中继承,也可在多个父类中继承,我们称之为'多重继承':
class A(object): def __init__(self, a): print('init A...') self.a = a class B(A): def __init__(self, a): super(B, self).__init__(a) print('init B...') class C(A): def __init__(self, a): super(C, self).__init__(a) print('init C...') class D(B, C): def __init__(self, a): super(D, self).__init__(a) print('init D...')
这里我们可以知道B继承了A C继承了A D继承了B和C 那么D具备A B C所有的功能