摘要:
自省 在日常生活中,自省(introspection)是一种自我检查行为。 在计算机编程中,自省是指这种能力:检查对象以确定它是什么类型、它有哪些属性和哪些方法。自省向程序员提供了极大的灵活性和控制力。 python中的自省函数有很多,凡是可以检查对象状态的函数都可以称为自省函数,常用的自省函数如下 阅读全文
摘要:
那种仅限从一个对象内部访问的“私有”实例变量在 Python 中并不存在。 但是,大多数 Python 代码都遵循这样一个约定:以一个下划线开头的名称 (例如 _spam) 应该被当作是 API 的非公有部分 (无论它是函数、方法或是数据成员)。 这应当被视为一个实现细节,可能不经通知即加以改变。 阅读全文
摘要:
python是一门动态语言,严格的来说python不存在多态。 def bark(animal): animal.bark() 上面的函数bark接收一个对象,并调用了对象的bark方法。对于python来说只要传入的对象有bark方法这个函数就可以执行,而不必去检查这个对象的类型。 class A 阅读全文
摘要:
重写了父类方法后如果又要调用父类的方法怎么办呢? 还记得调用对象方法时可以通过类调用吗?看下面的案例: class A: def func(self): print('A') class B(A): def func(self): A.func(self) # 通过硬编码直接通过A.func调用 p 阅读全文
摘要:
继承是面向对象一个非常重要的特性,如果没有继承那就不能称为类。 当定义一个类时,可以从现有的类继承,新的类称为子类(Sub Class)或派生类,被继承的类称为基类(Base Class),父类或超类(Super Class)。 派生类定义的语法如下: class SubClassName(Base 阅读全文
摘要:
定义在类中的函数称为方法。根据调用的方式不同,分为: 对象方法 类方法 静态方法 魔术方法。 对象方法 定义在类中的普通函数,一般通过对象调用称为对象方法。 对象方法的定义 为了讲清楚对象方法的定义和调用,先看下面的案例 案例: 定义函数my_print,它接收一个Point对象,然后打印这个点的x 阅读全文
摘要:
在编程的过程中经常会使用x.y的表达式,我把任何跟在点号之后的名称都称为属性。所以表达式x.y中,y是x的一个属性。 类有属性,对象也有属性。 类属性 类属性的定义 直接在类中定义的变量(与class语句只有一个缩进),就是类属性。 案例: 给Point类创建一个name属性用来表示点类的名称。 c 阅读全文