zoukankan      html  css  js  c++  java
  • Python笔记_第三篇_面向对象_9.Python中的"get"和"set"方法(@property和@.setter)

    1. 限制访问的问题

      如果学过C# 语言的我们可以知道C# 语言有get和set方法。我们之前想要获取父类中的私有变量,只能通过写一个set和get的函数进行访问或者通过类生成的新关键字来访问私有属性(_类名__私有变量)。其实Python也给我们提供了一种get和set的方法。其内容就是一种装饰器的作用,采取@property和@变量名.setter的方式。

      举例说明1:

    # 属性直接对外暴露
    # 不安全,没有熟虑过滤
    # 使用限制访问的话,需要些set和get方法。
    from types import MethodType
    
    class Person(object):
        def __init__(self,age):
            # 属性直接对外暴露,改为限制访问的方式
            self.__age = age
        # 方法名为受限制的变量去掉双下划线的方式访问
        @property      # 其实也是一种装饰器 这个就是get方法的意思
        def age(self):
            return self.__age
        @age.setter    # 去掉下划线.setter 这个就是set方法的意思
        def age(self,age):
            if age < 0:
                age = 0
            else:
                self.__age = age
    
    per = Person(18)
    per.age = 100
    print(per.age)
    # 100
    
    # Property:可以让你对受限访问的属性使用点语法。

      其实这种方法说白了,就是把get和set的自定义函数变换成点访问的形式

  • 相关阅读:
    Java笔记(11):Eclipse使用
    Java笔记(10):面向对象--内部类
    JVM监控及分析(02)
    JVM监控及分析(01)
    Java笔记(09):面向对象--接口
    Java笔记(08):面向对象--抽象类
    Java笔记(07):面向对象--多态
    环境搭建--apache/tomcat/nginx
    Linux监控分析
    HTML语法大全
  • 原文地址:https://www.cnblogs.com/noah0532/p/10867193.html
Copyright © 2011-2022 走看看