Python面向对象编程

Posted lewisliu111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python面向对象编程相关的知识,希望对你有一定的参考价值。

1.类 

class Student():
    pass

2.类实例化

  

class Student():
    pass
stu = Student()#创建实例通过类名()实现

3.类的property

通过定义一个特殊的__init__方法,绑定相关属性。

class Student():
    def __init__(self, name, age):    #_init__方法的第一个参数永远是self,表示创建的实例本身
        self.name = name              #__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
        self.age = age

有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去

class Student():
    def __init__(self, name, age):    #_init__方法的第一个参数永远是self,表示创建的实例本身
        self.name = name              #__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
        self.age = age
stu = Student(lewis, 19)

类属性  #类似于静态属性:归类所有,但类的所有实例都可以访问到

class Student():
    name = student

类属性的访问:类名.name或者实例名.name

4.访问权限 

class Student():
    def __init__(self, name, age):    
        self.__name = name              
        self.__age = age  #此时__name && __age property均为private,外界不能够访问。

这样就确保了外部代码不能随意修改对象内部的状态,这样通过访问限制的保护,代码更加健壮。

但是如果外部代码要获取name和age怎么办?可以给Student类增加get_nameget_age这样的方法:

class Student():
    ...
    def get_name(self):
        return self.__name
    def get_age(self):
        return self.__age

如果又要允许外部代码修改name && age怎么办?可以再给Student类增加set_nane && set_age方法:

class Student():
    ...
    def set_name(self, name): 
           self.__name = name
     def set_age(self, age):
           self.__age = age                 

你也许会问,原先那种直接通过stud.age = 20也可以修改啊,为什么要定义一个方法大费周折?因为在方法中,可以对参数做检查,避免传入无效的参数

私有方法:

  

class Student():
    ...
    def __method(self):  #__method为私有方法
        pass

 5.继承和多态

class Student(People):
         pass

Student类继承于People类

 

以上是关于Python面向对象编程的主要内容,如果未能解决你的问题,请参考以下文章

面向面试编程代码片段之GC

面向对象编程其实很简单--python面向对象(初级篇)

Python基础-第六天-面向对象编程

面向对象编程其实很简单——Python 面向对象(初级篇)

python之面向对象编程一

python基础之面向对象