当前位置: 首页 > news >正文

网站建设技术入股合同/市场推广方案和思路

网站建设技术入股合同,市场推广方案和思路,手机网站 需求模板,渝北集团网站建设Python从设计之初就是一门面向对象的语言,面向对象思想的第一个要素就是封装。所谓封装,通俗的讲就是类中的属性和方法,分为公有和私有,公有可以被外界访问,私有不能被外界访问,这就是封装中最关键的概念—…

Python从设计之初就是一门面向对象的语言,面向对象思想的第一个要素就是封装。所谓封装,通俗的讲就是类中的属性和方法,分为公有和私有,公有可以被外界访问,私有不能被外界访问,这就是封装中最关键的概念——访问控制。

访问控制有三种级别:私有、受保护、公有

私有(Private):只有类自身可以访问 受保护(Protected):只有类自身和子类可以访问 公有(Public):任何类都可以访问

由于Python不像Java,有访问控制符(private / public / protected),所以Python的访问控制也是容易被应聘者忽视和搞错的。

公有(Public)

在Python的类中,默认情况下定义的属性都是公有的。

class Foo(object):bar = 123def __init__(self, bob):self.bob = bobprint(Foo.bar)  # 123foo = Foo(456)
print(foo.bob)  # 456

上面类Foo中的bar属性就是类属性,__init__方法中定义的bob是实例属性,barbob都是公有的属性,外部可以访问,分别print类中的bar和实例中的bob,输出了对应的值。

受保护(Protected)

在Python中定义一个受保护的属性,只需要在其名字前加一个下划线_,我们将Foo方法中的bobbar改为_bob_bar,他们就变成了受保护的属性了,代码如下:

class Foo(object):_bar = 123def __init__(self, bob):self._bob = bobclass Son(Foo):def print_bob(self):print(self._bob)@classmethoddef print_bar(cls):print(cls._bar)Son.print_bar()  # 123son = Son(456)
son.print_bob()  # 456

定义一个类Son继承自Foo,由于受保护的对象只能在类的内部和子类中被访问,不能直接调用print(Son._bar)print(son._bob)来输出这两个属性的值,所以定义了print_barprint_bob方法,实现在子类中输出,这段代码也正常的输出了_bar_bob的值。

接下来,试着反向验证一下,在类的外部,能不能访问其属性,将上面代码的输出部分修改如下:

print(Son._bar)  # 123son = Son(456)
print(son._bob)  # 456

(假装)惊讶的发现,竟然没有报错,也输出了正确的值。

Python中用加下划线来定义受保护变量,是一种约定的规范,而不是语言层面真的实现了访问控制,所以,我们定义的保护变量,依然可以在外部被访问到(这是个feature,不是bug)。

私有(private)

Python定义私有属性,需要在属性名前加两个下划线__,把上面的代码修改一下,运行一下会发现下面的代码中的任何一个print都会报错的。

class Foo(object):__bar = 123def __init__(self, bob):self.__bob = bobclass Son(Foo):def print_bob(self):print(self.__bob)  # Error@classmethoddef print_bar(cls):print(cls.__bar)  # Errorprint(Son.__bar)  # Errorson = Son(456)
print(son._bob)  # Error

深入一下——私有属性真的就访问不到了吗?

要了解私有属性是否真的访问不到,需要从Python是如何实现私有属性入手。CPython中,会把双下划线的属性变为_ClassName__PropertyName的形式,用代码演示一下:

class Foo(object):__bar = 123print(Foo._Foo__bar)  # 123

运行一下可以知道,正常输出了__bar的值,但是不推荐这样去访问私有属性,因为不同的Python解释器对于私有属性的处理不一样。

特例

使用双下划线定义私有属性,有一种特殊情况,当属性后也有两个下划线的时候,这个属性会被Python解释器当做魔术方法,从而不做私有处理。

class Foo(object):__bar__ = 123print(Foo.__bar__)  # 123

上面代码输出了123,证明Python解释器并没有把__bar__当做私有属性。当定义私有属性时,需要注意名字最后最多只能有一个下划线。

另一个特例

假如定义的属性名就叫__呢?不妨直接试一下:

class Foo(object):__ = 123print(Foo.__)  # 123

可以发现名字叫__的属性也不会被认为是私有属性,名字是多个下划线的属性也不是私有属性(比如_______)。

函数的访问控制

前面主要介绍了属性的访问控制,在Python中函数是一等公民,所谓一等公民,就是函数可以像变量一样使用,所以函数的访问控制和属性一样,一样应用上面的规则。

如果需要Python方面的入门知识可以点击这个链接获取入门资料

 

http://www.jmfq.cn/news/4935655.html

相关文章:

  • 无锡网站建设价格/品牌如何做推广
  • 建设 静态网站/哪些广告平台留号码
  • 公司建设一个网站需要多少钱/网推渠道
  • 网页美工设计图片/淘宝seo优化是什么
  • 大连企业网站模板/智能建站平台
  • 做网站参考文献/网站广告投放收费标准
  • 外卖网站怎么做/关键词挖掘方法
  • 网站建设的五类成员/珠海网站设计
  • 温州企业建站系统模板/郑州百度推广代运营
  • 重庆哪里做网站/短视频精准获客系统
  • 东莞常平学校网站建设/惠州seo公司
  • 企业做网站可以带中国吗/河源疫情最新通报
  • c#做asp.net网站/微信推广多少钱一次
  • 华为网站推广策略/东莞优化排名公司
  • 扁平化网站布局/南宁seo规则
  • 临淄网站制作首选专家/seo是干嘛的
  • wordpress上传突然提示需要ftp/app排名优化公司
  • 网站开发与运营/最近一周新闻大事摘抄
  • 海安网站设计公司/免费个人主页网站
  • 个人如何做短视频网站/网站维护一年一般多少钱?
  • 站长网站建设/网站设计公司哪家专业
  • 企业做营销型网站/网站优化推广方案
  • 建筑企业招聘信息/seo技术是什么意思
  • 网站开发 源码/google搜索免费入口
  • 如何建立网站视频/怎么建自己的网站?
  • 做美图网站有哪些东西吗/关键词出价计算公式
  • 带网站的图片素材/论文收录网站有哪些
  • 开源cms管理系统/百度seo工作室
  • 网站设计开题报告范文/芭嘞seo
  • 为网站做一则广告语/网红推广团队去哪里找