Python中的类继承与多态

class annimal(object):
    def __init__(self,name,age=0):
        self.name = name  # 在这定义成员变量
        self.age = age
        self.public=11
        self._private=63#私有属性
        print("我是annimal")
    def  eat(self):
        print("annimal eat")
    def special(self):
        print("我是独有的方法"+self.name)
    def __del__(self):
        print("annima销毁了")
    def _private(self):#私有方法
        print("我是私有方法")

class Dog(annimal):
    def __init__(self,name,age=0):#self隐藏的,后面要写参数时需要self写出来,这是初始化函数
        super().__init__(name,age)#初始化父类
        print("我是dog")
    def eat(self):
        print(self.name+"吃骨头")#成员变量的复用
        super().eat()#调用父类的方法
    def __str__(self):#对对象输出时打印return的语句,不然打印的是地址
       return "我被打印了"
    def __del__(self):
        print(self.name+"自动销毁了")#对象回收时调用
mydog=Dog("旺财",3)
print(mydog.name)#直接获得成员变量
mydog.eat()
print(mydog)
mydog.special()
print(mydog.public)
#多继承
class A():
    def a(self):
      print("我是A")
class B():
    def b(self):
      print("我是b")
    pass
class C(A,B):
    pass
c=C()
c.a()
#在一对象调用另一对象,以及多态的实现
class dog():
    def __init__(self,name):
        self.name=name
    def play(self):
        print("一般狗玩耍")
class xiaotianquan(dog):
    def play(self):
        print("会咆哮")
class person():
    def __init__(self,name):
        self.name=name
        self.dog=0
    def playwithdog(self,dog):#直接传对象
       print(dog.name)
    def playwithdog1(self):
        self.dog.play()

xiaoming=person("小明")
dog1=dog("狗爹")
xiao=xiaotianquan("旺财")
xiao1=xiaotianquan("小黑")
xiaoming.playwithdog(xiao)
xiaoming.playwithdog(dog1)#多态的实现
xiaoming.dog=xiao1
xiaoming.playwithdog1()
"""
1.将对象传入另一对象的参数中,直接从方法入口进入
2.另一种是初始化时将调用对象看成成员变量self.dog=0,默认赋值。下面需要调用他得方法时直接用


"""
#类属性,放在方法之外
class Tool():
    count=0#类属性
    def __init__(self):

        Tool.count+=1
t1=Tool()
t2=Tool()
t3=Tool()
print(Tool.count)
#类方法
class Tool1():
    count=0#类属性
    @classmethod#类方法
    def coutt(cls):
        print(cls.count)
    @staticmethod
    def static():#不要self
        print("我是静态方法")
    def __init__(self):
        Tool1.count += 1
t11=Tool1()
t21=Tool1()
t31=Tool1()
Tool1.coutt()
Tool1.static()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值