property staticmathod classmethod 反射】的更多相关文章

使用@property 在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s = Student() s.score = 9999 这显然不合逻辑.为了限制score的范围,可以通过一个set_score()方法来设置成绩,再通过一个get_score()来获取成绩,这样,在set_score()方法里,就可以检查参数: class Student(object): def get_score(self): return self._sco…
@property 先看实例: from math import pi class Circle: def __init__(self,r): self.r = r @property def perimeter(self): return 2*pi*self.r @property def area(self): return self.r**2*pi # c1 = Circle(5) # print(c1.area) # 圆的面积 # print(c1.perimeter) # 圆的周长 上…
python内置了property.staticmethod.classmethod三个装饰器,有时候我们也会用到,这里简单说明下 1.property 作用:顾名思义把函数装饰成属性 一般我们调用类方法成员,都是如下写法: class propertyTest(): def __init__(self,x,y): self.x = x self.y = y def square(self): return self.x * self.y pt = propertyTest(3,5) print…
@property # property是一个装饰器函数 ,作用:将一个方法伪装成属性 # 所有的装饰器函数都怎么用? 在函数.方法.类的上面一行直接@装饰器的名字 # 装饰器的分类: # 装饰函数 # 装饰方法 : property # 装饰类 class Student: def __init__(self,name,age): self.__name = name self.age = age @property # 将一个方法伪装成一个属性 def name(self): return…
一.property property是一个装饰器函数 装饰器函数的使用方法:在函数.方法.类的上面一行直接@装饰器的名字 装饰器的分类: 1.装饰函数 2.装饰方法:property 3.装饰类 import math class Circle: def __init__(self,radius): #圆的半径radius self.radius=radius @property def area(self): return math.pi * self.radius**2 #计算面积 @pr…
一.封装 把一堆东西装在一个容器里 函数和属性装到了一个非全局的命名空间 class A: __N = 123 # 静态变量 def func(self): print(A.__N) # 在类的内部使用正常 a=A()a.func()print(A.__N) # 在类的外部直接使用 报错 print(A._A__N) # python就是把__名字当成私有的语法 定义一个私有的名字 : 就是在私有的名气前面加两条下划线 __N =123所谓私有,就是不能在类的外面去引用它 一个私有的名字 在存储…
URL: https://www.the5fire.com/python-property-staticmethod-classmethod.html #coding=utf-8 class MyClass(object): def __init__(self): print 'init' self._name = 'the5fire' @staticmethod def static_method(): print 'this is a static method!' @classmethod…
自定制property class Lazyproperty: def __init__(self,func): # print('==========>',func) self.func=func def __get__(self, instance, owner): print('get') # print(instance) # print(owner) if instance is None: return self res=self.func(instance) setattr(ins…
1.property property是一种特殊的属性,可实现把函数名变为属性名使用.它可以在不改变类接口的前提下使用存取方法 (即读值和取值) 来修改数据的属性,property类有3个方法getter(读操作).setter(赋值操作).deleter(删除操作),分别把对应的操作 绑定到指定的函数实现,应用如下: class People: def __init__(self,name,weight,height): self.__name=name self.wt=weight self…
一.super进阶 在多继承中:严格按照mro顺序来执行 super是按照mro顺序来寻找当前类的下一类 在py3中不需要传参数,自动就帮我们寻找当前类的mro顺序的下一个类中的同名方法 在py2中的新式类中,需要我们主动传递参数super(子类的名字,子类的对象). 函数名() 这样才能够帮我们调用到这个子类的mro顺序的下一个类中的方法 在py2的经典类中,并不支持使用super来找下一个类 class A: def func(self): print('is A') ​ ​ class B…