封装,继承,多态

一:封装

面向对象的三大特性:封装、继承、多态。   面试必问

作用:指的是隐藏对象中一些不希望被外部所访问到的属性或者方法

1.1隐藏属性(私有权限),只允许在类的内部使用,无法通过对象访问

如何把属性名或者方法名变成私有的?  在前面加上俩个下划线_ _就可以了

class Person:
    name = 'xiaolan' #类属性
    __age = 24        #隐藏属性
    def introduce(self)  #实例方法
        print(f{Person.name}的年龄是{Person.__age})   #在实例方法中访问类属性和隐藏属性
pe = Person()  
print(pe.name)  #打印 xiaolan
print(pe.__age)  #报错 属性错误
#那如何访问隐藏属性呢
#第一种  不推荐使用 了解就行
#print(pe._Person__age)  #可以访问隐藏属性打印24
#修改隐藏属性
#pe._Person__age=18
#print(pe._Person__age)  #打印18

#第二种 在类的内部访问  推荐使用  def
pe.introduce()
   
 

1.2私有属性、方法

区别:

_xxx: 单下划线开头,声明私有属性/方法,如果定义在类中,外部可以使用,子类也可以继承,但是在另一个py文件中通过from import * 导入时,无法导入

__xxx:双下划线开头,隐藏属性,如果定义在类中,无法在外部访问,子类不会继承,访问只可以间接通过定义def ,另一个py文件中通过from import * 导入时,也无法导入

1.2.1 隐藏方法 

class Man:
    def __play(self):  #隐藏方法
        print("学习py")
    def eat(self):  #普通的吃饭实例方法
        print("吃辣椒炒肉盖饭")
        self.__play() 
ma = Man()
ma.eat() #可以打印

1.2.2私有属性

class Person:
    name ='xiaohong'
    __age = 18   #隐藏属性 (双下划线)
    _sex = "女"   #私有属性(单下划线)
#实例化对象  创建的对象名 pe
pe = Person()
print(pe._sex) #女 可以通过 对象名._属性名直接打印
print(pe.__age) #报错用  def xx

1.2.4私有方法

class Girl:
    def _buy(self):  #私有方法
        print("买化妆品")
gl = Girl()
gl._buy() #可以打印

 

二:继承

 

 

三:多态

 

posted on 2026-01-31 04:22  梨花苗  阅读(0)  评论(0)    收藏  举报