首页 > 编程语言 > 详细

Python面向对象编程

时间:2018-09-25 23:22:49      阅读:156      评论:0      收藏:0      [点我收藏+]

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面向对象编程

原文:https://www.cnblogs.com/lewisliu111/p/9704176.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!