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_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面向对象编程的主要内容,如果未能解决你的问题,请参考以下文章