19 抽象类 接口类 封装. 多态

主要内容:

1.  抽象类(接口类):

  制定一个规范  :

from abc import ABCMeta,abstractmethod
class Payment(metaclass=ABCMeta):
    @abstractmethod
    def pay(self):pass

class Alipay(Payment):
    def __init__(self,money):
        self.money = money
    def pay(self):
        print(‘使用支付宝支付了%s‘ % self.money)
class Jdpay(Payment):
    def __init__(self,money):
        self.money = money
    def pay(self):
        print(‘使用京东支付了%s‘ % self.money)
class Wechatpay(Payment):
    def __init__(self,money):
        self.money = money
    def pay(self):
        print(‘使用微信支付%s‘ % self.money)
def pay(obj):             #归一化设计.
    obj.pay()
a = Alipay(200)
j = Jdpay(500)
w = Wechatpay(300)
pay(a)
pay(j)
pay(w)

2.  多态:python处处是多态,python:弱类型语言.

  java:强类型语言.

  python不管是什么类型,传入函数,封装到对象都可以.

  Pyhon不支持Java和C#这一类强类型语言中多态的写法,但是原生多态,其Python崇尚“鸭子类型”

这些类:都互称为鸭子类型.

class Str:
    def index(self):
        pass
class List:
    def index(self):
        pass
class Tuple:
    def index(self):
        pass

3.  封装

  a:   私有静态字段:类的内部可以访问,类的外部不可以访问.

        对于私有静态字段来说,只有在本类中内部访问,类的外部,派生类均不可访问.

class B:
    __money = 1000
class A(B):
    name = ‘lily‘
    __age = 20
    def func(self):
        print(self.__age)  #在类的内部实例化对象可以访问私有静态字段.
        print(A.__age)     #在类的内部类名可以访问私有静态字段.
    def func1(self):
        # print(self.__money)  #对于私有静态字段,只有本类中内部可以访问,类的外部派生类都不可以.
        # print(A.__money)
        pass
a1 = A()
a1.func()
# print(a1.__age)    #在类的外部,实例化对象不能访问类中的私有静态字段
# print(A.__age)     #在类的外部,类名不能访问私有静态字段
a1.func1()

  b: 私有方法:类的内部可以访问,类的外部和派生类都不可以访问.

class B:
    __money = 1000
    def __fn(self):
        print(‘B‘)
class A:
    name = ‘lily‘
    __age = 20
    def __func(self):
        print(‘func,,,,‘)
    def func1(self):
        self.__func()    #在类的内部可以访问私有方法.
        # self.__fn()    #在类的外部.派生类均不可以访问静态方法.
a1 = A()
# a1.__func()           #类的外部不可以访问私有方法
a1.func1()
# print(B._B__money)   #尽量不要用.
# print(a1._A__age)
# print(A._A__age)
a1._A__func()
A._A__func(1)          #类名去访问类中的方法.一定要传参数.

 c : 面试题:

class Parent:
    def __func(self):     #_Parent__func
        print(‘in Parent func‘)

    def __init__(self):
        self.__func()

class Son(Parent):
    def __func(self):
        print(‘in Son func‘)

son1 = Son()     #实例化一个对象son1,自动执行_init_方法,  执行self.__func(),内部实际self._Parent__func
                 #子类中没有,然后执行  ‘in parent func‘
print(Parent.__dict__)

  

 

  

原文地址:https://www.cnblogs.com/gyh412724/p/9371352.html

时间: 2024-10-28 22:22:21

19 抽象类 接口类 封装. 多态的相关文章

抽象类接口类

抽象类和接口类做的事情:建立规范 制定一个类的metaclass是ABCMeta那么这个类就编程了一个抽象类(接口类)这个类的功能就是建立一个规范类  让它里面的规范都有一样的方法或者属性 抽象类中所有被abstractmethod装饰的方法都必须被继承的字类实现 如果不实现 那么在实例化阶段就会报错 无论是抽象类还是接口类metaclass = ABCMeta 都不可以被实例化 from abc import ABCMeta, abstractmethod class Payment(meta

day_21(接口类,抽象类,封装)

class Payment: # 抽象类,或者接口类:制定一个规范. def pay(self):pass class QQ(Payment): def pay(self,money): print('您用qq支付了%s元' % money) class Ali(Payment): def pay(self,money): print('您用支付宝支付了%s元' % money) class Wechat(Payment): def pay(self,money): print('您用微信支付了

python 2018.7.25 接口类,抽象类

python 没有接口这个概念 接口类,抽象类: 制定一个规范. from abc import ABCMeta,abstractmethodclass Payment(metaclass=ABCMeta): # 抽象类(接口类): @abstractmethod def pay(self): pass # 制定了一个规范 class Alipay(Payment): def __init__(self,money): self.money = money def pay(self): prin

封装,多态,继承. super的方法,类的约束,

1.python的三大特性:python的三大特性,封装,多态,继承封装:函数 模块 类 对象多态 : python中默认支持多态继承: python中的子类继承父类属性和方法 鸭子类型: 看着像鸭子,它就是鸭子python中处处都是鸭子 # 两者之间没有任何关系,但是都遵循着一个隐形的标准两个类中的鸭子类型:# 优点:1,统一标准,减少了词汇量# 2,两者之间没有任何耦合性,但是可以产生关系,其中一个的对象可以调用另一个类的方法# 其他例子 :index pop clear 2. super的

封装 多态 类的约束 super

python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到?个对象中. 把固定功能的代码封装到?个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分析. 比如. 你写了?个很?B的函数. 那这个也可以被称为封装. 在?向对象思想中. 是把?些看似?关紧要的内容组合到?起统?进?存储和使?. 这就是封装. 2. 继承: ?类可以?动拥有?类中除了私有属性外的其他所有内容. 说?了, ??可以随便?爹的东?. 但是朋友们, ?定要认清楚?个事情.

接口类抽象类

接口类(抽象类): 在python中是没有接口类,可以把接口类和抽象类视为同一种定义:制定一个规范举例:收到项目经理的要求,写一个支付: #第一版 class Alipay: def __init__(self,money): self.money = money def pay(self): print('zfb支付了%s' % self.money) class Jd: def __init__(self, money): self.money = money def pay(self):

面向对象:接口类、抽象类

# python 没有接口这个概念# 接口类,抽象类: 制定一个规范. 接口类,抽象类:python中就是一样的 1,归一化设计. 2,制定一个规范,凡是继承我类的类,必须有我规定的方法. # 第一版 class Alipay: def __init__(self,money): self.money = money def pay(self): print('使用支付宝支付了%s' %self.money) class Jdpay: def __init__(self, money): sel

C++中的抽象类和接口类

接口类是一种特殊的抽象类. 抽象类: 类中至少含有一个纯虚函数. 抽象类的子类如果没有完全实现父类的纯虚函数,那么该子类也是一个抽象类. 接口类: 满足两个条件 (1)没有成员变量 (2)所有成员函数都为public且纯虚. 原文地址:https://www.cnblogs.com/Stephen-Qin/p/12436180.html

Python_015(面向对象(接口类,抽象类,多态,封装)

一.抽象类与接口类 1.抽象类:抽象即类似或者说比较像的部分,继承描述的是父类与子类的一种关系,要找出这种关系,必须先抽象再继承; a:抽象分成两个层次: 1)由对象->类:将两个有相似地方的对象抽取成类; 2)由类->父类:将两个有相似地方的类抽取成父类; :抽象最主要的作用就是划分类别(可以隔离关注点,降低复杂度) 2.为什么要有抽象类 与Java一样,Python也有抽象类的概念,需要借助模块实现,它是一个特殊的类,特殊之处在于只能被继承,不能被实例化; 类是从一些对象中抽取相同的内容而