封装,继承,多态
一:封装
面向对象的三大特性:封装、继承、多态。 面试必问
作用:指的是隐藏对象中一些不希望被外部所访问到的属性或者方法
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() #可以打印
二:继承
三:多态
浙公网安备 33010602011771号