Python类的三大特征和特殊方法

类的三大特征就是:封装,继承,多态

封装

最常用的解释就是,封装就是将数据和基于数据的操作封装在类中,隐藏内部的数据,对外只提供公共的访问接口。封装就是为了把一些变量和函数信息保存起来,不让外界调用。

私有属性

私有属性有两种,第一种名字前带一个下划线的是约定俗成的写法(外界可以调用,但不建议调用),第二种就是名字前面带两个下划线的属性(标准的私有属性,类外部不可以调用,但可以通过一些方法来实现调用)。

class Cat:
    def __init__(self,name,password):
        #可以用一个或两个下划线来标识私有属性
        #一个下划线的属性标识外部不应该调用,但还是可以直接调用
        self._name = name
        #两个下划线的属性是标准的私有属性,只有在当前类中可以调用,子类都不行,但也有办法调用
        self.__password = password
    
    #返回标准私有属性到终端
    def get__password(self):
        return self.__password
    
    #修改标准私有属性的值
    def set__password(self,value):
        self.__password = value

继承

继承主要就是为了少写代码,父类中有的方法如果在子类中合适就不需要再写一遍了。

class Animal:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def get_name(self):
        return self.name
    def set_name(self,value):
        self.name = value

#Dog类继承了Animal类
class Dog(Animal):
    def say():
        print('wang wang wang......')

#Cat类继承了Animal类
class Cat(Animal):
    def say():
        print('miao miao miao......')


dog = Dog('qiqi',12)
dog.get_name()
dog.set_name('qiqisile')    #把name属性的值qiqi改为qiqisile
dog.get_name()
dog.say()

多重继承

多重继承时,从父类继承属性的顺序是深度优先、从左至右。当调用一个属性或方法时,从最左边的第一个父类中开始寻找,然后再从第一个父类的父类、祖宗类中寻找,如果都没找到,则从第二个父类开始寻找(操作同第一个父类一样)。

多态

如果父类和子类中存在相同的方法,那么子类在调用该方法时,实际调用的就是子类的方法。这就是多态。

class Animal:
    def __init__(self, name):
        self.name = name

    def get_name(self):
        return self.name

    def set_name(self, value):
        self.name = value

    def say(self):
        print('这个动物在叫')

class Dog(Animal):
    def say(self):
        print('wang wang wang...')

class Cat(Animal):
    def say(self):
        print('miao miao miao...')

特殊方法

最疑惑的就是__new__方法和__init__方法了吧。

__new__(cls)创建实例对象的方法,cls则是类本身(第一个参数必须是cls),该方法主要是初始化方法,即创建实例对象的同时给对象绑定属性。(在实例对象被创建之前调用)

__init__(self)用于设置实例对象的初始值,self是实例本身(第一个参数必须是self)。(在实例对象创建完成后调用)

__del__(self)用于销毁实例对象

__repr__()用于格式化实例的打印样式

__slots__限制绑定属性

__call__(self)使实例变成可调用对象,用callable来判断是否为可调用对象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

缱绻命运

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

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

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

打赏作者

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

抵扣说明:

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

余额充值