Python面向对象学习(二)


权限管理

关于权限管理,就是定义一个私有属性,该属性只能在定义的类的内部使用,不可以在类的外部被使用,也不可以被继承该类的类调用,不过,在定义私有属性的时候 会生成一个_类名__私有属性名的值,这个值可以被外部调用,也可以被继承该类的类使用,但是不推荐这样。

class Person:
      def __init__(self, name, age):
          self.name = name
          # 定义私有属性
          self.__age = age

      def test(self):
          # 私有属性和方法可以在类的内部使用
          print(self.__age)
          self.__hello()

      # 定义私有方法
      def __hello(self):
          print('for test')

class Man(Person):
    def show(self):
          # 私有属性和方法在子类也不可以使用
          print(self.__age)

p = Person('老王', 38)
print(p.name)
# 属性前添加连个下划线,类的外部不能使用
# print(p.__age)

# 默认在添加两个下划线的属性名前添加了'_类名'
# print(p.dict)
# 强烈建议不要这样使用
# print(p._Person__age)

p.test()
# p.__hello()
m = Man('小明', 18)
# m.show()

类属性

关于类属性:

class Person:
    # 类属性属于整个类
    nation = '中国'

p = Person()
# 此时可以通过类名来调用
print(Person.nation)
# 但是不建议使用对象来调用
print(p.nation)

还有几个特殊的类属性:

# 特殊的类属性
# 打印类名字符串
print(Person.__name__)

# 打印父类组成的元组
print(Person.__bases__)

# 显示类相关的信息
print(Person.__dict__)
# 显示当前类可设置的属性
print(Person.__slots__)
作者:止语 ,转自 止语-编程学习分享 。 原文地址《Python面向对象学习(二)》

所有原创文章未经本人许可,不得用于商业用途以及传统媒体。网络媒体或个人转载请注明出处和链接,否则属于侵权行为。
本站部分内容收集于互联网,如有侵权内容,请与我们联系,我们会及时删除!
相关推荐

提交评论
1条评论
一言

土地是以它的肥沃和收获而被估价的;才能也是土地,不过它生产的不是粮食,而是真理。如果只能滋生瞑想和幻想的话,即使再大的才能也只是砂地或盐池,那上面连小草也长不出来的。 —— 别林斯基

友情链接