在python中,可以把所有数据类型都看做是对象,这个和javascript有些类似,一切都是对象~!,面向对象编程就是把一切要处理的事物都抽象成对象,这个对象包含了数据和操作数据的方法(函数)。同样的,python中的面向对象编程也具有封装、继承、多态这三个特点!
如何创建一个类和实例对象?
定义类使用class关键字,这个好像其他语言也是如此。
classCat(object):
def__init__(self,name):
self.name=name;
defmycatname():
print(mycatsnameis,self.name);
上面定义了一个叫cat的类,object是继承系统类,类里面有一个特殊的__init()__函数,类似于构造函数,初始化操作的,第一个参数永远是self,self指向的是实例本身,实例的时候不用传入,第二个参数是名字,传入的参数,第二个函数是输出cat的名字。下面我们执行实例化操作:
cat=Cat(huihui);
cat.name
huihui
cat.mycatname();
huihui
我们实例化了一个cat对象,cat对象可以直接调用实例的属性name,也可以调用类中的函数。
私有变量属性!
当我们定义的属性想要变为私有的时候,不想被外部调用,把数据封装起来,我们该怎么使用呢?使用方式就是在变量的前面加两个下划线。
classCat(object):
def__init__(self,name):
self.__name=name;
我们在name上加了两个下划线,这样name就变成私有变量了,外部是无法直接调用的。如果外部直接调用就会报错
cat=Cat(huihui);
cat.__name
Traceback(mostrecentcalllast):
Filestdin,line1,inmodule
AttributeError:Catobjecthasnoattribute__name
类如何继承和实现多态?
我们如何去继承一个类和重写父类的方法呢?
先定义一个父类
classParent(object):
defwoiam():
print(iamfather);
再定义一个继承它的子类
classChild(Parent):
defwoiam():
print(iamson);
在定义类名的时候首字母大写,再说一遍,python是区分大小写的语言,上面定义了一个Child类,这个类继承了Parent了,首先拥有了Parent类所有的属性和方法,其次还重写覆盖了woiam的方法。
实例的属性和类的属性是不同的!
实例的属性和类的属性是不同的,实例的属性属于每个实例本身,实例可以有无数个,类就像是模具,实例是用类制作出来的很多实物,实例的属性是互不干扰的,因为它们属于每个实例的个体,而类的属性是属于模具的,模具的属性变了,所有制造出来的实例带有的属性都变了。
至于这两个属性具体怎么个不同法,咱们下回分解!谢谢阅读!