markdown python,语法,属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown python,语法,属性相关的知识,希望对你有一定的参考价值。

# @property
@property 感觉上就是 Java 里面的 getter 和 setter 的作用, 存在的意义从各种例子上面看更像是权限控制上面的优化
```
In [18]: class Person(object):
    ...:     def __init__(self, firstname, lastname):
    ...:         self.firstname = firstname
    ...:         self.lastname = lastname
    ...:     def get_firstname(self):
    ...:         print('first name: %s' % firstname)
    ...:

In [19]: person = Person('xiao', 'ming')

In [21]: person.firstname
Out[21]: 'xiao'

In [22]: person.firstname = 'da'

In [23]: person.firstname
Out[23]: 'da'
```
上例子中, 我们可以随意的设置对象属性, 在对象的控制上并不是很理想, 我们可以通过 @property 来优化他
```
In [35]: class Person(object):
    ...:     @property
    ...:     def birth(self):
    ...:         return self._birth
    ...:     @birth.setter
    ...:     def birth(self, value):
    ...:         self._birth = value
    ...:     @property
    ...:     def age(self):
    ...:         return 2018 - self._birth
    ...:
    ...:

In [36]: person = Person()

In [37]: person.birth = 2000

In [38]: person.age
Out[38]: 18

In [39]: person.age = 20
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-39-23de733bd176> in <module>()
----> 1 person.age = 20

AttributeError: can't set attribute
```
上例中,我们没有给 age setter 的属性, 所以给他赋值的时候会抛 Exception

# Source
[Good Sample](https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143186781871161bc8d6497004764b398401a401d4cce000)

以上是关于markdown python,语法,属性的主要内容,如果未能解决你的问题,请参考以下文章

markdown python,语法

markdown python,练习,语法

markdown python,语法,运动

markdown python语法,for循环,枚举

markdown Python numpy矩阵数组操作基本语法

markdown #Python VS ES6语法比较