python-类的继承和多态

(1)继承

import time
class users:
    username=' '
    def __init__(self,uname):
        self.username=uname
        print('(构造函数;'+self.username+')')#显示用户名
    def dispusername(self):
        print(self.username)
class userlogin(users):
    def __init__(self,uname,lastlogintime):
        users.__init__(self,uname)#调用父类的构造函数
        self.lastlogintime=lastlogintime
    def displogintime(self):
        print('登陆时间:'+self.lastlogintime)
now=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))#获取当前时间
my1=userlogin('admin',now)#声明三个对象
my2=userlogin('lee',now)
my3=userlogin('zhang',now)
my1.dispusername()#分别调用父类和子类函数
my1.displogintime()
my2.dispusername()
my2.displogintime()
my3.dispusername()
my3.displogintime()

在这里插入代码片

在这里插入图片描述
(2)定义抽象类
python通过类库abc实现抽象类,因此在定义抽象类之前需要从类库abc导入ABCMeta类和abstractmethod()
form abc import ABCMeta,abstractmethod
在定义抽象类时,只需在类定义中增加如下代码:metaclass=ABCMeta
如:
class myabc(object):
metaclass=ABCMeta
在抽象类里可以定义抽象方法,需加上@abstractmethod
如:
class myabc(object):
metaclass=ABCMeta
@abstractmethod
def abcmethod(self):
pass
(3)多态:指在抽象类中定义的一个方法可以其子类中重新实现,不同子类中的实现方法也不相同

from abc import ABCMeta,abstractmethod
class shape(object):
    __metaclass__ = ABCMeta
    def __init__(self):
        self.color='black'
    @abstractmethod
    def draw(self):pass
class circle(shape):
    def __init__(self,x,y,r):
        self.x=x
        self.y=y
        self.r=r
    def draw(self):
        print('draw circle:(%d,%d,%d)'%(self.x,self.y,self.r))
class line(shape):
    def __init__(self,x1,y1,x2,y2):
        self.x1=x1
        self.x2=x2
        self.y1=y1
        self.y2=y2
    def draw(self):
        print('draw line:(%d,%d,%d,%d)'%(self.x1,self.y1,self.x2,self.y2))
c=circle(10,10,5)
c.draw()
l=line(10,10,20,20)
l.draw()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值