Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。这篇博文将详细记录Python的面向对象编程,接下来我们先来简单的了解下面向对象的一些基本特征。
在python中使用class语句来创建一个类,class之后为类的名称并以冒号结尾,例子如下:
class ClassName:
'类包含的主题内容'
class_suite #类体
类的帮助信息可以通过ClassName.__doc__查看。 class_suite 由类成员,方法,数据属性组成
实例(一个简单类的创建及组成)
class Employee:
'所有员工的基类'
empCount = 0 #定义初始值为0,这是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用 Employee.empCount 访问。
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print( "Total Employee %d" % Employee.empCount)
def displayEmployee(self):
print( "Name : ", self.name, ", Salary: ", self.salary)
创建实例对象 实例化类其他编程语言(java,C)中一般用关键字 new,但是在 Python 中并没有这个关键字,类的实例化类似函数调用方式。以下使用类的名称 Employee 来实例化,并通过 init 方法接收参数。
"创建 Employee 类的第一个对象"
emp1 = Employee("Zara", 2000) 参入的参数对应构造函数里面的name,salary
"创建 Employee 类的第二个对象"
emp2 = Employee("Manni", 5000)
访问属性 您可以使用点号 . 来访问对象的属性。使用如下类的名称访问类变量:
emp1.displayEmployee()
emp2.displayEmployee()
print ("Total Employee %d" % Employee.empCount)
class Employee:
'所有员工的基类'
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print("Total Employee %d" % Employee.empCount)
def displayEmployee(self,socure):
print("Name : ", self.name, ", Salary: ", self.salary,socure)
# "创建 Employee 类的第一个对象"
emp1 = Employee("Zara", 2000)
# "创建 Employee 类的第二个对象"
emp2 = Employee("Manni", 5000)
emp1.displayEmployee(20) 加入source参数的话在调用的时候传入也可以
emp2.displayEmployee(20)
print("Total Employee %d" % Employee.empCount)
输出:
Name : Zara , Salary: 2000 20
Name : Manni , Salary: 5000 20
Total Employee 2
添加,删除,修改类的属性。
emp1.age = 7 # 添加一个 'age' 属性
emp1.age = 8 # 修改 'age' 属性
del emp1.age # 删除 'age' 属性
class Employee:
'所有员工的基类'
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print ("Total Employee %d" % Employee.empCount)
def displayEmployee(self):
print( "Name : ", self.name, ", Salary: ", self.salary)
print ("Employee.__doc__:", Employee.__doc__)
print( "Employee.__name__:", Employee.__name__)
print ("Employee.__module__:", Employee.__module__)
print( "Employee.__bases__:", Employee.__bases__)
print ("Employee.__dict__:", Employee.__dict__)
输出:
Employee.__doc__: 所有员工的基类
Employee.__name__: Employee
Employee.__module__: __main__
Employee.__bases__: ()
Employee.__dict__: {'__module__': '__main__', 'displayCount': <function displayCount at 0x10a939c80>, 'empCount': 0, 'displayEmployee': <function displayEmployee at 0x10a93caa0>, '__doc__': '\xe6\x89\x80\xe6\x9c\x89\xe5\x91\x98\xe5\xb7\xa5\xe7\x9a\x84\xe5\x9f\xba\xe7\xb1\xbb', '__init__': <function __init__ at 0x10a939578>}