python学习笔记小结(3)

接上一篇博客


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()#介样子调用

输出:
<main.Dog object at 0x000001E99E26F9D0>
狗祖宗
<main.Dog object at 0x000001E99E26F9D0>
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值