首页 > 其他 > 详细

面向对象

时间:2020-02-18 16:44:05      阅读:84      评论:0      收藏:0      [点我收藏+]

单例模式   继承

基础

https://www.cnblogs.com/Eva-J/articles/7293890.html

进阶

https://www.cnblogs.com/Eva-J/articles/7351812.html

 

# 代码的规范没有建立起来
from abc import ABCMeta,abstractmethod
class Payment(metaclass=ABCMeta):    # 抽象类

    @abstractmethod   # 如果我必须要实现pay方法,那么我需要给pay加一个装饰器
    def pay(self):
        pass   # 创建的这个pay并没有内容,
               # 之所以写一个pay是为了提醒所有子类你一定要实现一个pay方法

    @abstractmethod
    def back(self):
        pass

class Wechatpay(Payment):
    def __init__(self,name,money):
        self.name = name
        self.money = money
    def pay(self):
        print(%s通过微信支付了%s元%(self.name,self.money))

class Alipay(Payment):
    def __init__(self,name,money):
        self.name = name
        self.money = money
    def pay(self):
        print(%s通过支付宝支付了%s元%(self.name,self.money))

class ApplePay(Payment):
    def __init__(self, name, money):
        self.name = name
        self.money = money
    def pay(self):
        print(%s通过apple pay支付了%s元 % (self.name, self.money))
    def back(self):
        print(退款)

# 归一化设计
def pay(person):
    person.pay()

ApplePay(alex,20000)
抽象类 :Payment这个类是一个抽象类
抽象类做什么事儿 : 约束所有的子类 必须实现被abstractmethod装饰的方法名
                  给我们的代码指定规范
特点 : 抽象类不能实例化,只是作为具体的类的规范
抽象类长什么样
    class 类名(metaclass = ABCMeta):

        @abstractmethod
        def 规定的方法名(self):pass

        @abstractmethod
        def 规定的方法名(self):pass

        
        @abstractmethod
        def 规定的方法名(self):pass
类只能单继承,所以抽象类 只能是所有的子类只有一个规范
# java 当中没有多继承的类
    # 接口 接口可以多继承
# 在python里没有接口的专用语法
    # 我们只是通过类的多继承 模仿接口的效果
from abc import ABCMeta,abstractmethod
class NormalAnnimal(metaclass=ABCMeta):
    @abstractmethod
    def eat(self):pass

    @abstractmethod
    def drink(self):pass
class FlyAnimal(metaclass=ABCMeta):
    @abstractmethod
    def fly(self):pass

class SwimAnimal(metaclass=ABCMeta):
    @abstractmethod
    def swim(self):pass

class WalkAnimal(metaclass=ABCMeta):
    @abstractmethod
    def walk(self):pass


class Frog(NormalAnnimal,SwimAnimal,WalkAnimal):
    def eat(self):
        pass


class Tiger(NormalAnnimal,SwimAnimal,WalkAnimal):pass
class Swan(NormalAnnimal,FlyAnimal,SwimAnimal,WalkAnimal):pass
class Parrot(NormalAnnimal,FlyAnimal,WalkAnimal):
    def talk(self):
        pass


# 抽象类 是单继承的规范
# 接口类 是多继承的规范

# java
    # 接口里面定义的所有的方法 都不能写具体的实现 pass
    # 抽象类里面定义的所有的抽象方法 内部是可以完成一些简单的代码

namedtuple

from collections import namedtuple

Course = namedtuple(Course,[name,price,period])
python = Course(python,20000,6 month)

print(python.name)
print(python.price)
print(python.period)
print(type(python))

print(python)
---->

python
20000
6 month
<class ‘__main__.Course‘>
Course(name=‘python‘, price=20000, period=‘6 month‘)



 

面向对象

原文:https://www.cnblogs.com/qj696/p/12326495.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!