幻灯网站源码,深圳企业专业网站设计,买网站主机,怎么做电影网站app1 介绍
面向对象编程是一种程序设计范式
把程序看做不同对象的相互调用#xff0c;对现实世界建立对象模型。
面向对象编程的基本思想#xff1a;
类和实例#xff1a;
类用于定义抽象类型
实例根据类的定义被创建出来 2 定义类并创建实例
类通过class关键字定义对现实世界建立对象模型。
面向对象编程的基本思想
类和实例
类用于定义抽象类型
实例根据类的定义被创建出来 2 定义类并创建实例
类通过class关键字定义类名以大写字母开头紧接着是object)表示该类是从哪个类继承下来的。
class Person(object): pass
xiaoming Person() #创建实例
xiaohong Person() 3 创建实例属性
对每一个实例都可以直接给他们的属性赋值。
例如给xiaoming这个实例加上name,gender和birth属性
xiaoming Person()
xiaoming.name XiaoMing
xiaoming.gender Male
xiaoming.birth 1990-1-1 给xiaohong加上的属性不一定要和xiaoming相同
xiaohong Person()
xiaohong.name Xiao Hong
xiaohong.school No.1 High School
xiaohong.grade 2 实例属性可以像变量一样进行操作
xiaohong.grade xiaohong.grade 1 4 初始化实例属性
Person类在创建的时候就拥有name、gender、birth属性。
在定义Person类时可以为Person类添加一个特殊的__init__()方法当创建实例时这个方法被自动调用。
__init__()方法的第一個参数必須是self(也可以是別的名字但建议使用习惯用法)。
class Person(object): def __init__(self, name, gender, birth): self.name name self.gender gender self.birth birth
xiaomingPerson(Xiao Ming, Male, 1991-1-1)
xiaohongPerson(Xiao Hong, Female, 1992-2-2) 5 访问限制
Python对属性权限的控制是通过属性名来实现的。
如果一个属性由双下划线开头__该属性就无法被外部访问。
class Person(object): def __init__(self, name): self.name name self._title Mr self.__job Student p Person(Bob) print p.name #ok print p._title #ok print p.__job #error
如果一个属性以__xxx__的形式定义那它又可以被外部访问了以__xxx__定义的属性在Python的类中被称爲特殊属性。
由很多预定义的特殊属性可以使用通常不把普通属性用以__xxx__定义。 6 创建类属性
相当于java类的静态变量。
class Person(object): address Earth #类属性 def __init__(self, name) self.name name 可以直接访问类属性而不必通过类的实例访问。 print Person.address #Earth 类属性也可以动态添加和修改
Person.address China
在实例上修改类属性时实际上并没有修改类属性而是给实例绑定了一个实例属性。
当实例属性和类属性重名时实例属性优先级高它将屏蔽掉对类属性的访问。
所以千万不要在实例上修改类属性。 7 定义实例方法
一个实例的私有属性就是以__开头的属性无法被外部访问。
实例的方法就是在类中定义的函数它的第一个参数永远是self指向调用该方法的实例本身其他参数和一个普通函数完全一样。
class Person(object): def __init__(self, name): self.__name name def get_name(self): return self.__name 在class中定义的实例方法其实也是属性它实际上是一个函数对象。 8 定义类方法
相当于java的静态方法
和属性类似方法也分实例方法和类方法
通过classmethod可以将方法绑定到类上类方法的第一个参数将传入类本身通常将参数命名为cls。
class Person(object): count 0 classmethod def how_many(cls): return cls.count def __inti__(self, name): self.name name Person.count Person.count 1 print Person.how_many() p1 Person(Bob) print Person.how_many() 因为是在类上调用而非实例上调用因此类方法无法获得任何实例变量只能获得类的引用。