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面向对象学习(二)

相关推荐

发表评论

路人甲
看不清楚?点图切换

网友评论(0)