python学习笔记小结(3)

python学习笔记小结(3),第1张

接上一篇博客

文章目录
    • 1、类
    • 2、继承
    • 4、多层继承
    • 5、多态


1、类
#类,存放该类对象的共同属性
class Dog():
    def info(self):#self是接受类的实例化对象本身
        print(self)
        print("狗祖宗")
    def attack(self):
        print("咬人")
jingmao = Dog()
jingmao.info()#介样子调用
print(jingmao)#jingmao就是self,jingmao是一个实例

#添加jingmao属性
jingmao.name = 'xiaocai'
jingmao.hp = 200
jingmao.att = 450
print(jingmao.name,jingmao.hp)
jingmao.attack()#介样子调用

输出:

狗祖宗

xiaocai 200
咬人

神奇的__init__函数

class Dog():
    def __init__(self):#初始化,在实例化对象的时候自动执行一下的代码块
        self.name = 'xiaocaigou'
        self.hp = 2000
        self.att = 450
        self.armor = 200
    def info(self):
        print("%s的生命力%d"%(self.name,self.hp))
jinmao = Dog()
jinmao.info()#能打印,因为他自动初始化了

输出:
xiaocaigou的生命力2000

__init__函数也可以传参

class Dog():
    def __init__(self,name,hp,att,armor):#初始化,在实例化对象的时候自动执行一下的代码块
        self.name = name
        self.hp = hp
        self.att = att
        self.armor = armor
    def info(self):
        print("%s的生命力%d"%(self.name,self.hp))
jinmao = Dog('xiaocaigou',2000,450,200)#__init__函数可以传参
hashiqi = Dog('xiaoshagou',2000,100,400)
jinmao.info()
hashiqi.info()

输出:
xiaocaigou的生命力2000
xiaoshagou的生命力2000

神奇的__str__函数

class Dog():
    def __init__(self,name,hp,att,armor):#初始化,在实例化对象的时候自动执行一下的代码块
        self.name = name
        self.hp = hp
        self.att = att
        self.armor = armor
    def info(self):
        print("%s的生命力%d"%(self.name,self.hp))
    def __str__(self):#如果直接打印对象的话,要输出来的信息,没有这个魔法函数,直接打印对象会输出地址
        return 'self.name,self.hp'
jinmao = Dog('xiaocaigou',2000,450,200)#__init__函数可以传参
hashiqi = Dog('xiaoshagou',2000,100,400)
jinmao.info()
hashiqi.info()
print(jinmao)

输出:
xiaocaigou的生命力2000
xiaoshagou的生命力2000
self.name,self.hp

2、继承
#继承
#父类
class Dog():
    def __init__(self):
        self.name = 'dogdad'
    def skill(self):
        print("attack people")
class Dog2():
    def __init__(self):
        self.name = 'dogmom'
    def skill(self):
        print("attack dog")
    def skill2(self):
        print("yaoweiba")
#子类
class Son(Dog,Dog2):#儿子继承了两个父类这样写
    pass
jinmao = Son()
print(jinmao.name)#儿子继承了父类,所以子类什么都没写也有name,若两个父类有同样属性,优先继承第一个
jinmao.skill()
jinmao.skill2()

输出:
dogdad
attack people
yaoweiba

#继承
#父类
class Dog():
    def __init__(self):
        self.name = 'dogdad'
    def skill(self):
        print("attack people")
class Dog2():
    def __init__(self):
        self.name = 'dogmom'
    def skill(self):
        print("attack dog")
    def skill2(self):
        print("yaoweiba")
#子类
class Son(Dog,Dog2):#儿子继承了两个父类这样写
    def __init__(self):
        self.name = 'gouson'
    def skill(self):
        print('tiangou')
print(jinmao.name)#子类重写了所以就是自己的
jinmao.skill()#子类重写了所以就是自己的
jinmao.skill2()

输出:
gouson
tiangou
yaoweiba

#如果子类重写了依然想调用父类
class Dog():
    def __init__(self):
        self.name = 'dogdad'
    def skill(self):
        print("attack people")
class Dog2():
    def __init__(self):
        self.name = 'dogmom'
    def skill(self):
        print("attack dog")
    def skill2(self):
        print("yaoweiba")
#子类
class Son(Dog,Dog2):#儿子继承了两个父类这样写
    def __init__(self):
        self.name = 'gouson'
    def skill(self):
        print('tiangou')
    #如果子类重写了依然想调用父类,用super
    def dad_skill(self):
        super().__init__()
        super().skill()
        super().skill2()
jinmao = Son()
jinmao.skill()
jinmao.dad_skill()

输出:
tiangou
attack people
yaoweiba

4、多层继承
#多层继承,父类的功能子类都有
class Dog():
    def __init__(self):
        self.name = 'dogdad'
    def skill1(self):
        print("attack people")
class Son(Dog):
    def __init__(self):
        self.name = 'dogmom'
    def skill2(self):
        print("attack dog")
    def skill3(self):
        print("yaoweiba")
#子类
class grandson(Son):
    def __init__(self):
        self.name = 'gouson'
    def skill4(self):
        print('tiangou')
jinmao = grandson()
jinmao.skill2()

输出:attack dog

5、多态
#多态
class Dog():
    def __init__(self):
        self.name = 'dog dad'
    def skill(self):
        print('attack people')
class Son1(Dog):
    def skill(self):
        print('attack man')
class Son2(Dog):
    def skill(self):
        print('attack women')
class Son3(Dog):
    def skill(self):
        print('attack children')
son1 = Son1()
son2 = Son2()
son3 = Son3()
son1.skill()
son2.skill()
son3.skill()

输出:
attack man
attack women
attack children

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/873426.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存