日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

封装2

發布時間:2023/11/27 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 封装2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

面向對象的三大特性:繼承 多態? 封裝

封裝

  廣義上的

  狹義上的:會對一種現象起一個專門屬于它的名字

把一對東西裝在一個容器里

函數和屬性撞到了一個非全局的命名空間 -- 封裝

python

pulic 公有的

private 私有的

java完全面向對象的語言

public 共有的

protect 保護的

private 私有的

定義一個私有的名字:就是在私有的名字前面加兩天下劃線 __N = ‘aaa’

所謂私有,就是不能再累的外面去引用它

class A:__N = 'aaa'  # 靜態變量def func(self):print(A.__N)  # 在類的內部使用正常a = A()
a.func()
print(A.__N)   # 在類的外部直接使用 報錯class A:__N = 'aaa'  # 靜態變量def func(self):print(A.__N)  # 在類的內部使用正常print(A.__dict__)
print(A._A__N)   # python就是把__名字當成私有的語法 

一個私有的名字,在存儲的過程中仍然會出現A.__dict中,所以我們仍然可以調用

python對其的名字進行了修改:__類名_名字

只不過在類的外部調用:需要‘_類名__名字’去使用

在類的內部可以正常的使用名字

_A__N

在類內? 只要你的代碼遇到了__名字, 就會被python解釋器自動的轉換成_類__名字

私有的屬性
class B:def __init__(self,name):self.__name = namedef func(self):print('in func : %s'%self.__name)
b = B('alex')
# print(b._B__name)
b.func()私有的方法
class C:def __wahaha(self):print('wahaha')def ADCa(self):self.__wahaha()
c = C()
# c._C__wahaha()
c.ADCa()

 在類中,靜態屬性,方法,對象屬性都可以變成是由的,只需要在這些名字之前加上__

# class D:
#     def __func(self):      # '_D__func'
#         print('in func')
#
# class E(D):
#     def __init__(self):
#         self.__func()      # '_E__func'
# e = E()
# 私有的名字不能被子類繼承# class D:
#     def __init__(self):
#         self.__func()
#     def __func(self):
#         print('in D')
#
# class E(D):
#     def __func(self):
#         print('in E')
# e = E()
# 私有的名字,在類內使用的時候,就是會變形成_該類名__方法名
# 以此為例 :沒有雙下換線會先找E中的func
# 但是有了雙下劃線,會在調用這個名字的類D中直接找_D__func
# class F:
#     pass
# F.__name = 'alex'  # 不是在創建私有屬性
# print(F.__name)
# print(F.__dict__)
# 變形只在類的內部發生

  java中的對比

public 共有的? 在類的內部可以使用,子類可以是使用,外部可以使用 python所有正常的名字

protect 保護的? 在類的內部可以使用,子類可以使用,外部不可以使用 python中沒有

private 私有的? ?只能在類的內部使用,子類和外部都不可以使用 python中的__名字

私有的用法

當一個方法不想被子類繼承的時候

有些屬性或者方法不希望從外部被調用,只想提供給內部的方法使用

例子:

  描述一個房子

    單價

    面積

    長寬高

class Room:def __init__(self,name,price,length,width,height):self.name = nameself.price = priceself.__length = lengthself.__width = widthself.__height = heightdef area(self):return self.__length*self.__widthr = Room('鵬鵬',100,2,1,0.5)
print(r.name)
print(r.price)
print(r.area())class Person:def __init__(self,name,pwd):self.name = nameself.__pwd(pwd)def __pwd(self,pwd):# '12345' ---> ascii ---> 2175981070935self.my_secret_pwd = 2175981070935

  

?

轉載于:https://www.cnblogs.com/hanjiahao/p/8903250.html

總結

以上是生活随笔為你收集整理的封装2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。