-
由于Python是动态语言,任何实例在运行期都可以动态地添加属性。如果要限制添加的属性,就可以利用Python的一个特殊的__slots__来实现,顾名思义,__slots__是指一个类允许的属性列表:__slots__ = ('name', 'gender', 'score')。__slots__的目的是限制当前类所能拥有的属性,如果不需要添加任意动态的属性,使用__slots__也能节省内存。对于继承,子类的__slots__只需包含父类所没有的属性即可。查看全部
-
使用 get/set 方法来封装对一个属性的访问在许多面向对象编程的语言中都很常见。但是写 s.get_score() 和 s.set_score() 没有直接写 s.score 来得直接。第一个score(self)是get方法,用@property装饰,第二个score(self, score)是set方法,用@score.setter装饰,@score.setter是前一个@property装饰后的副产品。查看全部
-
Python 提供的基本数据类型 int、float 可以做整数和浮点的四则运算以及乘方等运算。 但是,四则运算不局限于int和float,还可以是有理数、矩阵等,这需要我们在定义类的时候定义__add__, __sub__, __mul__, __div__等方法查看全部
-
如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数。 要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数。查看全部
-
对 int、str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须在类定义中提供我们自己的特殊方法 __cmp__()。查看全部
-
如果要把一个类的实例变成 str,就需要实现特殊方法__str__()。在类定义中,改变__str__()的内容能改变print对应实例的内容。除了__str__()以外,还有__repr__(),__str__()用于显示给用户,而__repr__()用于显示给开发人员,改变__repr__()的内容将会改变直接输出(不借助print)对应实例的内容查看全部
-
python特殊方法的特点查看全部
-
python的特殊方法查看全部
-
print的特殊方法查看全部
-
除了 name和gender 外,可以提供任意额外的关键字参数,并绑定到实例,查看全部
-
拿到一个变量,除了用 isinstance() 判断它是否是某种类型的实例外,还可以用 type() 函数获取变量的类型,它返回一个 Type 对象。其次,可以用 dir() 函数获取变量的所有属性,对于实例变量,dir()返回所有实例属性,包括`__class__`这类有特殊意义的属性。dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数了。查看全部
-
除了从一个父类继承外,Python允许从多个父类继承,称为多重继承。多重继承通过 super()调用__init__()方法时,A 虽然被继承了两次,但__init__()只调用一次。多重继承的目的是从两种继承树中分别选择并继承出子类,以便组合功能使用。查看全部
-
动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。查看全部
-
函数isinstance()可以判断一个变量的类型,既可以用在Python内置的数据类型如str、list、dict,也可以用在我们自定义的类,它们本质上都是数据类型。在一条继承链上,一个实例可以看成它本身的类型,也可以看成它父类的类型。查看全部
-
函数super(Student, self)将返回当前类继承的父类,即 Person ,然后调用__init__()方法,注意self参数已在super()中传入,在__init__()中将隐式传递,不需要写出(也不能写)。查看全部
举报
0/150
提交
取消