一.预备知识  

 最近开始尝试做一些tornado商城项目,在开始之前需要引入一些项目设计知识,如接口,抽象方法抽象类,组合,程序设计原则等,个人理解项目的合理设计可增加其灵活性,降低数据之间的耦合性,提高稳定性,下面介绍一些预备知识 

1.接口

  其实py中没有接口这个概念。要想实现接口的功能,可以通过主动抛出异常来实现

  接口作用:对派生类起到限制的作用

例:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
接口,python中的接口,通过在父类中主动抛出异常实现
接口的作用:起到了限制的作用
"""

class IFoo:
    def fun1(self):
        pass
        raise Exception("----")

class Bar(IFoo):
    def fun1(self):
        #方法名必须和父类中的方法名相同,不然没办法正常执行,会抛出异常
        print("子类中如果想要调用父类中的方法,子类中必须要有父类中的方法名")
    def fun2(self):
        print("test")

obj = Bar()
obj.fun2()

2.抽象方法抽象类

  抽象类,抽象方法是普通类和接口的综合,即可以继承也可以起到限制作用

  由于python 本身没有抽象类、接口的概念,所以要实现这种功能得abc.py 这个类库,具体实现方法如下 :

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
抽象类,抽象方法
抽象类,抽象方法是普通类和接口的综合,即可以继承也可以起到限制作用
"""

import abc
class Foo(metaclass=abc.ABCMeta):
    def fun1(self):
        print("fun1")

    def fun2(self):
        print("fun2")

    @abc.abstractclassmethod
    def fun3(self):
        pass


class Bar(Foo):
    def fun3(self):
        print("子类必须有父类的抽象方法名,不然会抛出异常")


obj = Bar()
obj.fun1()
obj.fun2()
obj.fun3()

 3.组合

  python中“多用组合少用继承”,因为继承的偶合性太强,可以把基类,当做参数传入派生类中,用于解偶

如;

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#继承

class Animals:
    def eat(self):
        print(self.Name + " eat")
    def drink(self):
        print(self.Name + " drink")

class Person(Animals):
    def __init__(self, name):
        self.Name = name

    def think(self):
        print(self.Name + " think")
obj = Person("user1")
obj.drink()
obj.eat()
obj.think()
继承

相关文章:

  • 2021-09-08
  • 2021-12-10
  • 2022-02-20
  • 2021-12-29
  • 2022-01-16
  • 2022-12-23
猜你喜欢
  • 2021-10-12
  • 2021-07-31
  • 2021-09-21
  • 2021-06-01
  • 2022-12-23
  • 2022-02-18
  • 2022-02-07
相关资源
相似解决方案