ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

封装,继承,多态

封装,继承,多态

封装,继承,多态

一:封装

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

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

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 = Person()
print(pe._sex) #女 可以通过 .属性名直接打印
print(pe.__age) #报错用  def xx

1.2.4私有方法

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

 

二:继承

 

 

多态

 

返回列表