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来判断是否为可调用对象。

你可能感兴趣的:(python知识点,java,开发语言)