Python 对象。与所有Python 对象有关的三个属性是什么?

Python面向对象三大特性:封装、继承和多态。

1.封装

用自己的话说就是,将内容封装到一个地方,从这个地方调用被封装的内容。

第一步:将内容封装到某处

通过对象直接调用被封装的内容:

#创建类
class Foo:
    def __init__(self,name,age):
        self.name = name
        self.age = age

#根据Foo创建对象
obj1 = Foo("suxuefeng",22)
#通过对象obj1直接调用name和age属性,也就是被封装的内容
print(obj1.name)
print(obj1.age)

结果:

suxuefeng
22

通过self间接调用被封装的内容:

#创建类
class Foo:
    def __init__(self,name,age):
        self.name = name
        self.age = age
#通过self间接调用被封装的内容
    def detail(self):
        print(self.name)
        print(self.age)
obj1 = Foo("suxuefeng1",25)
obj1.detail()

结果:

suxuefeng1
25

由此可见,对于Python面向对象的封装来说,就是使用构造方法将内容封装到对象中,然后通过对象直接或者self间接调用被封装的内容。

2.继承

继承,顾名思义就是子类可以继承父类的内容

将多个类共有的方法提取到父类中,子类只需要继承父类,不必实现每个方法。

class Animal:
    def eat(self):
        print("%s chi " %self.name)
    def drink(self):
        print("%s he " %self.name)
    def shit(self):
        print("%s la " %self.name)
    def pee(self):
        print("%s sa " % self.name)

class Cat(Animal):
    def __init__(self,name):
        self.name = name
        self.breed = "猫"
    def cry(self):
        print("喵喵叫")

class Dog(Animal):
    def __init__(self,name):
        self.name = name
        self.breed = "狗"
    def cry(self):
        print("汪汪叫")

c1 = Cat("我家的小猫")
c1.eat()

c2 = Cat("你家的小猫")
c2.drink()

d1 = Dog("我家的小狗")
d1.eat()

d2 = Dog("你家的小狗")
d2.shit()

结果:

我家的小猫 chi 
你家的小猫 he 
我家的小狗 chi 
你家的小狗 la 

Python中还可以多继承,如果继承了多个类,其寻找的方法有两种,分别是:深度优先和广度优先

当类是经典类时,多继承情况下,按照深度优先方式查找

当类是新式类时,多继承情况下,按照广度优先方式查找

class C1:    #C1是经典类
    pass

class C2(C1):    #C2是经典类
    pass





class N1(object):    #N1是新式类
    pass

class N2(N1):    #N2是新式类    
    pass

 3.多态

Python不支持多态,支持函数式编程和面向对象,函数式编程能完成的操作,面向对象都可以,而面向对象能完成的操作,函数式编程不行(函数式编程无法实现面向对象的封装功能)。

一般在Python开发中,全部使用面向对象或者面向对象和函数式混合使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值