Python进阶——面向对象

2019-06-28  本文已影响0人  顾北向南

1. Python中的@property

  @property是python自带的装饰器,装饰器(decorator)可以给函数动态加上功能。对于类的方法,装饰器一样起作用。Python内置的@property装饰器就是负责把一个方法变成属性调用的:

class Square(object):
    def __init__(self):
        self._width=10
        self._height =10
    @property
    def width(self):
        return self._width
    @property
    def height(self):
        return self._height
    
> s =Square()
> print(s.width)
> s.width = 1024 # 会报错,这样可以保证属性的安全性
class Square(object):
    def __init__(self):
        self._width=10
        self._height =10
    @property
    def width(self):
        return self._width
    @property
    def height(self):
        return self._height
    @property.setter
    def width(self,w):
        slef._width = w

2. python中的slots魔法

   Python是一门动态语言。动态语言允许我们在程序运行时给对象绑定新的属性和方法,当然也可以对已经绑定的属性和方法进行解绑。但是如果需要限定自定义类型的对象只能绑定某些属性,可以通过在类中定义__slots__变量来进行限定。需要主要的是__slots__的限定只对当前类的对象生效,多子类不起任何作用。

class Student:
    # 限定Student对象只能绑定name,age
    __slots__ = ('name','age')

3. 静态方法和类方法

4. 类之间的关系

5. 抽象方法

import abc
class Base(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def save(self):
        pass

6. Super()

7. 多继承

上一篇 下一篇

猜你喜欢

热点阅读