现在都流行面前对象编程。文字介绍可能看得很晕,看不懂和不理解当然看得晕,不用怕,慢慢看到最后你会有所收获。
python新手学习面向对象基本特征:
在Python中,定义类是通过class关键字,class后面紧接着是类名,即ClassName,类名通常是大写开头的单词。我喜欢驼峰式写法首字母都大写。
定义类:
第一种类名后面直接跟冒号。
第二种类名后面跟小括号再冒号。
第三种类名后面括号中object再跟冒号。
三种的关系:第一种和第二种程序会默认就是第三种,第一种和第二种只是简写。如果没有继承自定义的类,就可以这样写。
如果要继承自定义的类就不能够简写。(object),表示该类是从哪个类继承下来的,继承的概念我们后面再讲,通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。
比如你有个类叫object1,你想继承object1,你用简写就直接继承程序默认的object。
方法:事实它就是一个函数,只不过在类中定义的时候叫方法。
属性:事实它就是一个变量,只不过在类中定义的时候叫属性和有点不同。
构造函数:__init__()该方法在类实例化时会自动调用,又叫初始化方法。
其中构造方法有两个参数(id 和 age),self.id和self.age就是两个属性。
实例化对象:
创建多一个方法output(),打印构造函数的属性。
创建实例:
输出结果:
self代表类的实例,而非类
类的方法与普通的函数只有一个特别的区别:
在类地内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数,self代表的是类的实例。
self的名字并不是规定死的,也可以使用this,但是最好还是按照约定是用self。
self就是实例化op自身,其中self.name可以等同op.name。
以后再创建一个xh= ClassName('小红',18),这个时候self就是xh。
注意点:
注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去。
类属性与方法
类的私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时self.__private_attrs。
类的私有方法
__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.__private_methods。
继承:Python 同样支持类的继承,如果一种语言不支持继承,类就没有什么意义。
在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。
继承和方法重写:
定义一个People人类,用Student学生类继承People人类。
如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法。子类只需要写一个跟父类相同的方法(函数)就可以覆盖重写。
输出结果:
总结概论:
class关键字后面跟类名,继承就在小括号里面输入需要继承的类名。
__init__()构造函数该方法在类实例化时会自动调用。比如你从外面回来要进家之前要用钥匙开门,这个步骤就是初始化。
__del__() 析构函数,释放对象时使用。比如你每次锁门要出去,析构函数默认你锁上门就完了。突然有一次抽风对门说:芝麻关门。析构函数就是程序执行完之前要做的最后一件事。
self的名字并不是规定死的,也可以使用this,但是最好还是按照约定是用self。
子类方法和父类方法相同,子类方法会覆盖父类方法。
继承用个例子说:
定义一个商场类和一个人类,人类继承商场类。
实例化对象:
输出结果:
分析例子:
商场类中有两个方法分别是买和卖。人类中只有一个go()方法。人类继承商场类中两个方法。所以后面的实例化对象中都是人类People():
xm.buy()是父类的商场类的方法,由于继承的关系,所以可以直接使用。
xh.go()是人类People()中本身方法。
xh.sell()是父类的商场类的方法,由于继承的关系,所以可以直接使用。
基础的面向对象能够了解:定义类、构造函数、方法、属性、私有化、方法重写、继承这几点就算入门,其实还有很多高级的用法。再python深入学习中逐渐掌握。
还没有评论,来说两句吧...