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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python属性访问权限_python 面向对象-访问权限修饰符

發(fā)布時(shí)間:2023/12/19 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python属性访问权限_python 面向对象-访问权限修饰符 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、訪問(wèn)權(quán)限修飾符可以用來(lái)修飾變量和方法

2、內(nèi)部調(diào)用和外部調(diào)用:

比如在類(lèi)的內(nèi)部調(diào)用實(shí)例方法,叫內(nèi)部調(diào)用;在類(lèi)的外部調(diào)用實(shí)例化方法,叫外部調(diào)用

當(dāng)然,類(lèi)變量以及實(shí)例變臉也是有內(nèi)部調(diào)用和外部調(diào)用

#coding=utf-8

classStudent():

name= ""age=0

sum=0def __init__(self,name,age): #構(gòu)造函數(shù)

self.name =name

self.age=agedef do_homework(self):#實(shí)例方法

self.do_english_homework()#內(nèi)部調(diào)用

print(self.name +"do homework")defdo_english_homework(self):print(self.name+ "do english homework")

student1= Student("anson",19)#student1.do_english_homework()

student1.do_homework()#外部調(diào)用#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test6.py"#anson do english homework#anson do homework

3、安全隱患:直接通過(guò)外部調(diào)用一些變量,可能造成一些不安全的因素。

比如,給學(xué)生打分,如果直接外部訪問(wèn),修改學(xué)生分?jǐn)?shù),是非常危險(xiǎn)的。所以,推薦調(diào)用方法去修改對(duì)象屬性

#coding=utf-8

classStudent():

sum=0def __init__(self,name,age): #構(gòu)造函數(shù)

self.name =name

self.age=agedef do_homework(self):#實(shí)例方法

self.do_english_homework()print(self.name +"do homework")defdo_english_homework(self):print(self.name+ "do english homework")defmarketing(self,score):if score <0:return

else:

self.score=scoreprint (self.name+"score :" +str(score))

student1= Student("anson",19)

student1.score= -1 #可以修改,但是沒(méi)有邏輯限制,很危險(xiǎn)

print(student1.__dict__)

student1.marketing(60)#可以修改,但是有邏輯限制,python 、Java、都是推薦使用的#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test6.py"#{'age': 19, 'score': -1, 'name': 'anson'}#anson score :60

4、使用訪問(wèn)權(quán)限修飾符,限制外部調(diào)用直接修改變量:對(duì)方法

ps.python 中不用修飾符修飾時(shí),默認(rèn)都是public 的(python 沒(méi)有public private 這種權(quán)限修飾符),得著么做來(lái)限制__funcname()即可表示這個(gè)方法不能被外部訪問(wèn)

#coding=utf-8

classStudent():

sum=0def __init__(self,name,age): #構(gòu)造函數(shù)

self.name =name

self.age=agedef do_homework(self):#實(shí)例方法

self.do_english_homework()print(self.name +"do homework")defdo_english_homework(self):print(self.name+ "do english homework")def __marketing(self,score):if score <0:return

else:

self.score=scoreprint (self.name+"score :" +str(score))

student1= Student("anson",19)

student1.__marketing(60)#左邊雙下劃線,表示這個(gè)方法不允許外部訪問(wèn)#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test6.py"#Traceback (most recent call last):#File "/Users/anson/Documents/Project/python_ToolCodes/test6.py", line 22, in #student1.__marketing(60)#AttributeError: Student instance has no attribute '__marketing'

5、使用訪問(wèn)權(quán)限修飾符,限制外部調(diào)用直接修改變量:對(duì)變量

student1.__score = -1:還是能去訪問(wèn),沒(méi)啥用

#coding=utf-8

classStudent():

sum=0def __init__(self,name,age): #構(gòu)造函數(shù)

self.name =name

self.age=agedef do_homework(self):#實(shí)例方法

self.do_english_homework()print(self.name +"do homework")defdo_english_homework(self):print(self.name+ "do english homework")def __marketing(self,score):if score <0:return

else:

self.score=scoreprint (self.name+"score :" +str(score))

student1= Student("anson",19)

student1.__score = -1

print(student1.__dict__)#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test6.py"#{'age': 19, '__score': -1, 'name': 'anson'}

再來(lái):

student1有__score 屬性

student2 沒(méi)有這個(gè)屬性,如果去讀這個(gè)屬性student2.__score,必然報(bào)錯(cuò)

實(shí)際上呢,student1利用了python的動(dòng)態(tài)添加特性,給新增了個(gè)__score 屬性,student2沒(méi)去新增這個(gè)屬性,當(dāng)然就讀不出來(lái)了。

所以__score 這招,在方法的訪問(wèn)限制上是生效的,但是對(duì)變量沒(méi)啥用。

#coding=utf-8

classStudent():

sum=0def __init__(self,name,age): #構(gòu)造函數(shù)

self.name =name

self.age=agedef do_homework(self):#實(shí)例方法

self.do_english_homework()print(self.name +"do homework")defdo_english_homework(self):print(self.name+ "do english homework")def __marketing(self,score):if score <0:return

else:

self.score=scoreprint (self.name+"score :" +str(score))

student1= Student("anson",19)

student1.__score = -1

print(student1.__dict__)

student2= Student("bob",19)print(student2.__dict__)#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test6.py"#{'age': 19, '__score': -1, 'name': 'anson'}#{'age': 19, 'name': 'bob'}

總結(jié),python 其中總的來(lái)說(shuō)好似沒(méi)發(fā)強(qiáng)制限制開(kāi)發(fā)者不能去讀私有變量的,開(kāi)發(fā)者用魔術(shù)方法還是可以讀到,但是,總的來(lái)說(shuō),靠人治,靠自覺(jué)吧

總結(jié)

以上是生活随笔為你收集整理的python属性访问权限_python 面向对象-访问权限修饰符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。