b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

python 变量命名规范#是注释。通过空格进行缩进,当一行(13)

电脑杂谈  发布时间:2018-02-10 22:04:08  来源:网络整理

@property将getter方法变成属性,此时@property本身又创建了@score.setter装饰器,负责将setter方法变为属性赋值,于是可以对score进行属性操作。如果只定义了getter方法,没有定义setter方法,那么就是只读属性。通过@property可以让调用者写出简洁的代码,同时保证了参数的校验。

设计类的继承关系时,通常主线都是单一继承下来的,如果需要加入额外的功能,通过多重继承就可以实现,这种设计称为MixIn,例如:让Dog除了继承Animal,同时继承Runnable,为了更好的看出继承关系,一般将Runnable改为RunnableMixIn:

设计类的时候,我们优先考虑多重继承来组合多个MixIn的功能,可快速构造所需的子类。

python中有许多特殊用途的函数可以帮助我们定制类。

__str__():打印对象时,自定义返回的字符串

>>> class Student(object):
...     def __init__(self,name):
...         self.name = name
...     def __str__(self):
...         return 'student object (name:%s)' % self.name
...
>>> print(Student('apple'))
student object (name:apple)

__iter__:如果一个类想用于for...in,类似list或tuple,就需要实现__iter__()方法,该对象返回一个迭代对象,然后for循环会不断调用迭代对象的__next__()方法拿到下一个值,直至遇到StopIteration时退出循环。例如,for循环迭代菲波那切数列:

>>> class Fib(object):
...     def __init__(self):
...         self.a, self.b = 0, 1   # 初始化计数器 a,b

...     def __iter__(self):
...         return self             # 返回迭代对象自己

...     def __next__(self):
...         self.a, self.b = self.b, self.a + self.b    # 计算下一个值
...         if self.a > 100:        # 退出循环的条件
...             raise StopIteration()
...         return self.a           # 返回下一个值
...
>>> for n in Fib():
...     print(n)

__getitem__:上面Fib()可像list一样用于for循环,如果想像list那样按下标取元素,需要实现__getitem__()方法。与之对应的是__setitem__()方法,把对象视作list来对集合赋值,__delitem__(),用于删除某个元素。

__getattr_:当调用类的方法或属性时,如果不存在会报错。没有找到属性的情况下,会调用__getattr__,该方法可把一个类的所有属性和方法全都动态化处理。例如:

>>> class Student(object):
...     def __getattr__(self, attr):
...         if attr=='age':
...             return 18
...         if attr=='name':
...             return lambda:'name'
...
>>> stu.name()
'name'
>>> stu.age
18 


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-70754-13.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 刘询
      刘询

      有本事联合国让中国说了算在中国办公

    • 杨亚楠
      杨亚楠

      这样我们大家就能好好看着你有一天如同肥猪一样被国家斩杀

    热点图片
    拼命载入中...