一、 私有属性和私有方法
应用场景
在实际开发中,对象的某些属性或方法可能只希望在对象的内部使用,而不希望在外部被访问到
私有属性 就是 对象 不希望公开的属性 (属性即类里面的变量)
私有方法 就是 方法 不希望公开的方法
定义方式
在定义属性或方法时,在属性名或者方法名前添加两个下划线,定义的就是私有属性或方法,只能在类里面用。
classMy:deftest(self):
self.__password = 123456 #私有属性
defsay(self):print('password',self.__password)def __set_password(self): #私有方法
self.__password = 7890
defupdate(self):
self.__set_password()
m=My()
m.test()#无输出结果
m.say() #输出:password 123456
m.update() #无输出结果
m.say() #输出:password 7890
参考:https://www.2cto.com/os/201807/763010.html
二、继承
子类继承自父类,可以直接享受父类中已经找到封装好的方法
子类中应该根据自己的需求,封装子类特有的属性和方法
单继承
1,继承的概念 语法和特点
继承的概念:子类拥有父类的所有方法和属性(子类只需封装自己特有的方法和属性)
2,继承的语法
class 类名(父类)
def 子类特有的方法
classLm:
money= 1000000house= 5
defdriver(self):print('会开车')classMcb(Lm):defabout_me(self):print('我有 %s 钱 ,%s 房子'%(self.money,self.house))
self.driver()defdriver(self):print('会开28个轮子的汽车')
m=Mcb()
m.driver()#输出:会开28个轮子的汽车
m.about_me()
#以上代码输出:
会开28个轮子的汽车
我有1000000 钱 ,5房子
会开28个轮子的汽车
3. super().方法名():在父类某个方法的基础上增加新功能
class Car: #父类
defrun(self):print('running...')return 'abc'
class NewCar(Car): #子类
defrun(self):#沿用父类中的功能的同时,再增加下面的新功能
res =super().run() #super()的意思就是找到父类,等同于Car().run()
print('fly...') #增加的父类中没有的功能
print(res)
bmw=NewCar()
bmw.run()
#以上代码输出结果如下:
running...
fly...
abc
继承的传递性:(爷爷 父亲 儿子)
1,C类从B类继承,B类又从A类继承
2,那么C类就具有B类和A类的所有的属性和方法
子类拥有父类以及父类的父类中封装的所有的属性和方法
参考:https://www.2cto.com/os/201807/763010.html