Python面向对象编程,,1.类 class


1.类 

class Student():    pass

2.类实例化

  

class Student():    passstu = 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 = agestu = 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_name和get_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面向对象编程

评论关闭