1. 面向对象:
1.1 抽象:[ 类 ===具体化===> 对象1,对象2,对象3 ] [ 类 <====抽象==== 对象1,对象2,对象3 ]
1.1.1 对象和类
- 对象(实例):由数据及能对其实施的操作构成的封装体
- 类:描述了对象的特征(数据和操作)
1.1.2 类的定义:(object为万类之源)
1.1.3 类的方法:
1.1.4 实例(Instances):
实例的创建:通过调用类对象
1) 定义类 -- Dog
2) 创建一个实例 -- dog
3) 通过实例使用属性或方法 -- dog.greet
1.1.5 实例属性(Instances Attributes):
class Dog(object): 'define dog class' def setName(self, name): self.name = name def greet(self): print "Hi, I am %s." % self.name if __name__ == '__main__': dog = Dog() dog.setName("Paul") dog.greet()
1.1.6 对象的初始化方法 __init__()
1) 当类被调用后,Python将创建实例对象;
2) 创建对象以后,Python自动调用的第一个方法为__init__();
3) 实例对象作为方法的第一个参数(self)被传递进去,调用类创建实例对象时的参数都传给__init__().
class Dog(object): 'define dog class' def __init__(self, name): self.name = name def greet(self): print "Hi, I am %s." % self.name if __name__ == '__main__': dog = Dog("Sara") dog.greet()
1.1.7 类属性(Class Attributes):
- 类的数据属性(静态成员),仅仅是所定义的类的变量
- 在类创建后被使用
- 可以由类中的方法来更新,也可以在主程序中更新
- 类属性和实例无关,修改类属性需要使用类名
class Dog(object): 'define dog class' counter = 0 def __init__(self, name): self.name = name Dog.counter += 1 def greet(self): print "Hi, I am %s, my numnber is %d" % (self.name, Dog.counter) if __name__ == '__main__': dog1 = Dog("Sara") dog1.greet() dog2 = Dog("Alex") dog2.greet()
1.2 继承(Inheritance):
1.2.1 父类(基类) 和 子类(派生类)
1.2.2 子类的定义(单继承,多继承)
1.2.3 子类定义举例和重载:
class Dog(object): 'define Dog class' counter = 0 def __init__(self, name): self.name = name Dog.counter += 1 def greet(self): print "Hi, I am %s, my number is %d"%(self.name, Dog.counter) class BarkingDog(Dog): 'define subclass BarkingDog' def greet(self): 'initial subclass' print "Woof! I am %s, my number is %d"%(self.name, Dog.counter) if __name__ == '__main__': dog1 = BarkingDog("Zoe") dog1.greet() dog2 = BarkingDog("Bob") dog2.greet()
1.2.4 私有属性和方法:
1) 默认情况下,Python类的成员属性与方法都是“public”
2) 提供“访问控制符”来限定成员函数的访问
- 双下划线 __:__var属性会被__classname_var替换,防止父类与子类中的同名冲突
- 单下划线_ :在属性名前使用一个单下划线字符,防止模块的属性用"from mymodule import * "来加载