面向对象之—property,staticmethod】的更多相关文章

一 特性( property) property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值. property是内置的一种封装方法:把一个属性“伪装”成一个数据属性,做法就是在需要伪装的属性正上方加@property. 那么其实我们并不是说每个属性都需要伪装,比如说我们的身体bmi指数,是通过计算得来的,所以我们一般会定义一个函数,因为他需要计算,但是其实他更像 一个类似名字,性别这一类的属性,所以这个时候我们就可以使用@property. class Poeple: def _…
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…
面向对象 - 封装: 封装:在类定义阶段,以__开头的属性名发生了变形 eg: __x --> _A__x / __foo --> _A__foo 1.特点: 1.在类外部无法直接访问 __x 是 _A__x 2.在类内部可以直接使用 self.__foo() == self._A__foo() 3.子类无法覆盖父类以__开头的属性 因为根本不是一个名字 __x _A__x 2.总结: 这种变形需要注意的问题: 1.这种机制也并没有真正意义上限制我们从外部直接访问属性,知道了类名和属性名就可以…
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…
面向对象设计中最基础的3个概念:数据封装.继承和多态 动态给class增加功能 正常情况下,当定义了一个class,然后创建了一个class的实例后,可以在程序运行的过程中给该实例绑定任何属性和方法,这就是动态语言的灵活性. (1)给一个实例绑定的方法,对另一个实例是不起作用的. (2)为了给所有实例都绑定方法,可以给class绑定方法. Student.set_age=set_age 注:是set_age,而不是set_age(  ) (3) 给class绑定方法后,所有实例均可调用. #定义…
property功能 以调用数据属性的方式(不用加括号)调用方法 方法定义成数据属性(方法本应该是动词) # 定义property之前 class People: def __init__(self,name,age,height,weight): self.name=name self.age=age self.height=height self.weight=weight def bmi(self): return self.weight /(self.height*self.height…
一.property引入 为了使对象的属性不暴露给调用者和进行属性值检查,设置了访问属性的接口函数,使用函数访问属性,并可以在函数内部检查属性. >>> class Student(object): def get_score(self): return self._score def set_score(self, value): if not isinstance(value, int): raise ValueError('score must be an integer!') o…
前言 前面讲到实例属性的时候,我们可以通过 实例对象.实例属性 来访问对应的实例属性 但这种做法是不建议的,因为它破坏了类的封装原则 正常情况下,实例属性应该是隐藏的,只允许通过类提供的方法来间接实现对实例属性的访问和操作 class PoloBlog: # 构造方法 def __init__(self, name): self.name = name blog = PoloBlog("小菠萝") # 破坏了封装原则 print(blog.name) blog.name = "…
1.类的成员? 变量.方法.属性 class Foo: # 方法 def __init__(self,name): # 实例变量/字段 self.name = name # 方法 def func(self): pass # obj,Foo类的对象 # obj,Foo类的实例 obj = Foo('朱奎峰') 变量:1.实例变量(字段)     2.类变量(静态字段) 实例一: class Foo: # 类变量(静态字段) country = "中国" def __init__(sel…
python面向对象内置装饰器property,staticmethod,classmethod的使用 @property 装饰器作用及使用 作用:面向对象中的方法伪装成属性 使用如下: class Circle: def __init__(self,r): self.r = r @property def area(self): return 3.14*self.r**2 @property def perimeter(self): return 2*3.14*self.r C = Circl…