Python是一门面向对象的语言,这篇文章就来介绍几点Python中面向对象的知识点
1、类的声明:
class Person:#类名用大写开头
#属性
name="cherish"
age=18
#方法
def coding(self):
print("I love hebe")
2、类的成员:
类的成员有属性和方法,如上例中的name和age是属性,coding是方法。用实例化的对象+“.”访问其成员。如p.name、p.coding()
3、self关键字:
self关键字是类的方法中必须带的参数,相当于C#/C++的this指针,如果没有self,在调用其方法就会报错(不信你试试)
4、类的实例化:
与C#不同,python中类的实例化不需要new关键字
p=Person()
5、构造函数:
如果代码不重写构造函数,那默认带的参数就是self
__init__(self)
用带参数的构造函数重写上面的例子
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
def coding(self):
print("I love hebe")
此时实例化对象就需要提供参数,否则不能成功实例化
6、“私有化”成员:
在C#/C++中,会用public或private声明类的成员,用以说明成员是公有或私有的。在python中没有这样的关键字,但是提供了一种"私有化"机制:
在变量名前面加上两个下划线:"__",那么这个成员就是私有的
class Person:
name="cherish"
__age=18
此时name是可访问的,__age是私有成员不可访问
然而,python的“私有”只是一种表面现象,虽然p.__age不可访问,但是可以通过“实例化名称_类名__原变量名”(p._Person__age)的方式访问
7、继承:
class Chinese(Person):
pass
此处Person是其父类,pass关键字代表不做任何操作
如果子类定义了与父类同名的属性或方法,就会覆盖其父类对应的成员
class Chinese(Person):
def coding(self):
print("I love 田馥甄")
如果子类的构造函数是其父类构造函数的基础上做更多的操作,则需要调用其父类的构造函数:父类名.__init__(self)
或者使用super函数:super().__init__()
Python支持多重继承。