面向对象基础

一、面向对象思想

1、三大特征:继承、封装、多态
封装:对一系列相同 特征行为的事物的统称。而表现形式上将事物定义成,也就是指类的属性和方法 的封装。

继承:对于封装的扩充,新的类具有现有类别的特征和行为,也能具有自己的行为和特征。现有的类叫父类,新类为子类。

多态: 子类别虽然有父类别的相同的方法,但是表现形式不同。

二、类和对象

2.1方法

面向过程写的代码称为函数,将函数写到类里面称为类的方法。

class Chicken():
    def tezheng(self):
           weight="15kg"
           price="15"
#定义一个对象
chicken1=Chicken()
#对象调用实例属性
chicken1.tezheng 
        

三、魔法方法

带有"_ _方法名 _ _“风格的函数和对象称为魔法方法。

3.1 _ _ init _ _ 表示初始化方法

class Chicken():
        def __init__(self):
            self.weight="15kg"
            self.price=15
chicken1=Chicken()

chicken1.weight="3.5"

3.2 _ _ str_ _ 表示为输出时显示的是内容而不是地址

class Chicken():
        
        def __init__(self,weight,price):
            self.weight=weight
            self.price=price
        def __str__(self):
            return "这是什么"

chicken1=Chicken(20,30)

print(chicken1)

输出:
这是什么
### 3.3 _ _ del_ _() 表示删除时自动调用

四、继承

单一继承

使用object方法继承,不使用object继承则需要是指明继承的父类。

#父类也称公共基
class Chicken(object):
    def __init__(self,name):
        self.name=name
    def __str__(self):
        return f"这是{ self.name}"
#子类
class Chicken1(Chicken):
    pass

chicken1=Chicken1("开心")
print(chicken1)

4.2多继承

class Chicken(object):
    def __init__(self,name):
        self.name=name
    def __str__(self):
        return f"这是{ self.name}"
class Chicken1(object):
    def eat(self):
        return "这是Chicken1的方法"
class Cock(Chicken,Chicken1):
    pass

chicken1=Cock("开心")
print(Chicken1.eat)
print(chicken1)

4.3 ⼦类重写⽗类同名⽅法和属性

⼦类和⽗类具有同名属性和⽅法,默认使⽤⼦类的同名属性和⽅法。

4.4 ⼦类调⽤⽗类的同名⽅法和属性

class Chicken(object):
    def __init__(self):
        self.name="这是Chicken的方法"
    def eat(self):
        return f"这是{self.name}"
class Chicken1(object):
    def __init__(self):
        self.name="这是Chicken1的方法"
    def eat(self):
        return f"这是{self.name}"
class Cock(Chicken,Chicken1):
    def __init__(self):
        self.name="这是Coc的方法"
        
    def eat(self):
        self.__init__()  ## 如果是先调⽤了⽗类的属性和⽅法,⽗类属性会覆盖⼦类属性,故在调⽤属性前,先调⽤
#⾃⼰⼦类的初始化
        return f"这是{self.name}"
    def chicken_master(self):
 # 调⽤⽗类⽅法,但是为保证调⽤到的也是⽗类的属性,必须在调⽤⽅法前调⽤⽗类的初始化        
        Chicken.__init__(self)
        Chicken.eat(self)
    

chicken1=Cock()
print(chicken1.eat)

print(chicken1.name)
print(chicken1.chicken_master)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_44424860

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值