zoukankan      html  css  js  c++  java
  • python面向对象高级编程

    1.绑定方法

    给所有实例都绑定方法,可以给class绑定方法:

    >>> def set_score(self, score):

    ... self.score = score

    ...

    >>> Student.set_score = set_score

    给class绑定方法后,所有实例均可调用。

    2.使用__slots__

    但是,如果我们想要限制实例的属性怎么办?比如,只允许对Student实例添加nameage属性。

    为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性。

    class Student(object):

       __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称

     使用__slots__要注意,__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的。除非在子类中也定义__slots__,这样,子类实例允许定义的属性就是自身的__slots__加上父类的__slots__

    3.使用@property

    @property的实现比较复杂,我们先考察如何使用。把一个方法变成属性,只需要在方法前加上@property就可以,@property本身又创建了另一个装饰器@score.setter,负责把一个setter方法变成属性赋值,于是,我们就拥有一个可控的属性操作。如果没有加上@score.setter,该属性就变成只读属性。

    只定义getter方法,不定义setter方法就是一个只读属性。

    4.多重继承

  • 相关阅读:
    Selenium RC For Python:教程2
    sql server 获取同比或环比
    C#泛型泛型集合Dictionary<K,V>
    C# FileStream
    c# 强命名的作用
    装箱与拆箱的概念及意义
    SQL Server中Rollup关键字使用技巧
    Javascript内存泄露
    几条复杂的SQL语句
    Group by与having理解
  • 原文地址:https://www.cnblogs.com/zhouqianwei/p/python.html
Copyright © 2011-2022 走看看