Python(二)面向对象

一、类

创建类:

1
2
class Person():
pass

创建实例:

1
variable = Person()

给实例绑定属性,例如绑定name和age:

1
2
3
def __init__(self,name,age):
self.name = name
self.age = age

案例

1
2
3
4
5
6
class Person():
def __init__(self,name,age):
self.name = name
self.age = age
ba = Person('python',10)
print(ba.name,ba.age)

在类中封装方法:
添加一个打印的方法printPerson(self)

1
2
3
4
5
6
7
8
class Person():
def __init__(self,name,age):
self.name = name
self.age = age
ba = Person('python',10)

def printPerson(self):
print(self.name,self.age)

调用该方法

1
printPerson(ba)

二、私有变量

Python中,在变量前加上两个下划线__,即私有变量,相当于Java中private。如下把name设置为私有,age不变,则name外部不可直接访问。

1
2
3
def __init__(self,name,age):
self.__name = name
self.age = age

外部如需获取私有变量__name,可在Person类中定义get_name()方法,相当于Java中的get方法如:

1
2
3
4
5
6
7
8
9
class Person():
def __init__(self,name,age):
self.__name = name
self.age = age
#get方法
def get_name(self):
return self.__name
ba = Person('python',10)
print(ba.get_name())

外部如需修改私有变量__name,同样可在类中定义set_name()方法,相当于java中的set方法,可以看到以下代码,初始化变量ba的name = python,将ba.set_name = java,最后打印出的结果name值为”java“,如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Person():
def __init__(self,name,age):
self.__name = name
self.age = age
#get方法
def get_name(self):
return self.__name
#set方法
def set_name(self,name):
self.__name = name

ba = Person("python",1)
ba.set_name("java")
print(ba.get_name())

三、继承

继承是指子类继承父类的特征和行为,如有 父类Animal,子类Cat,Cat继承Animal:
Java版

1
2
class Cat extends Animal{
}

Python版

1
class Cat(Animal):

四、多态

Python中继承与多态的思想与Java的并无两样。
多态是指同一个行为具有多个不同表现形式或形态的能力。