#!/usr/bin/python
#-*- coding:utf-8 -*-
'''
Created on 2016年6月24日
@author: Administrator
'''
'''
Python面向对象编程
http://www.runoob.com/python/python-object.html
'''
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
class Point:
def __init__(self, x =0 ,y = 0):
self.x = x
self.y = y
def __del__(self):
class_name = self.__class__.__name__
print class_name, "销毁"
class Parent: #定义父类
parentAttr = 100
def __init__(self):
print "调用父类构造函数"
def parentMethod(self):
print "调用父类方法"
def setAttr(self,attr):
Parent.parentAttr = attr
def getAttr(self):
print "父类属性:", Parent.parentAttr
class Child(Parent): #定义子类
parentAttr = 200
def __init__(self):
print "调用子类构造方法"
def childMethod(self):
print "调用子类方法"
#方法重写
def getAttr(self):
print "子类属性:", Child.parentAttr
#访问对象
def accessObject():
emp1 = Employee("Zara", 2000)
emp2 = Employee("Manni", 5000)
print Employee.empCount
emp1.displayEmployee()
emp1.age = 7
print emp1.age
emp1.age = 9
print emp1.age
del emp1.age
emp2.displayEmployee()
#访问对象的属性
print getattr(emp1, 'name') #没有则抛出异常
#检查是否存在一个属性
print hasattr(emp1, 'name') #没有则返回False ,有则返回True
#设置属性
setattr(emp1, 'name', 'zhangsan')
emp1.displayEmployee()
#删除属性
emp2.age = 9
delattr(emp2, 'age') #如果删除一个不存在的属性,则抛出异常
#类的属性和方法
#类的私有属性:__private_attrs, 两个下划线开头,声明该属性为私有
#类的方法
#类的私有方法: __private_method , 两个下划线开头,声明为该方法为私有方法
class JustCounter:
__secretCount = 0 #私有变量
publicCount = 0 #公开变量
def count(self):
self.__secretCount += 1
self.publicCount += 1
print self.__secretCount
#Python内置属性
def printInnerAttribute():
#__dict__:类的属性
print "Employee.__dict__:", Employee.__dict__
#__doc__:类的文档字符串
print "Employy.__doc__:", Employee.__doc__
#__name__:类名
print "Employee.__doc__:", Employee.__name__
#__module__:类定义所在的模块
print "Employee.__module__", Employee.__module__
#__bases__:类的所有父类构成元素
print "Employee.__bases__:", Employee.__bases__
#Python对象销毁
def destoryObject():
pt1 = Point()
pt2 = pt1
pt3 = pt1
print id(pt1), id(pt2), id(pt3) #打印对象的ID
#40895560 40895560 40895560
del pt1
del pt2
del pt3
#类的继承
def extendObject():
c = Child()
c.childMethod()
c.parentMethod()
c.setAttr(200)
c.getAttr()
#判断一个类是否是另一个类的子类或者子孙类
print issubclass(Child, Parent)
#判断一个对象是否是一个类或者子类的实力
print isinstance(c, Child)
#私有变量 和 私有方法
def privateMethod():
counter = JustCounter()
counter.count()
counter.count()
print counter.publicCount
#print counter.__secretCount 不能通过实例来访问私有变量
#可以通过 对象._类名__私有属性 的方式来访问私有属性
print counter._JustCounter__secretCount
if __name__ == '__main__':
#访问对象
#accessObject()
#访问内部属性
#printInnerAttribute()
#销毁对象
#destoryObject()
#类的继承
#extendObject()
#私有变量和私有方法
privateMethod()
-------2016-06-25 0:20
@modaokeng.yongtaixincun.baiyunqu.guangzhoushi.guangdongsheng
Python高级编程---面向对象
猜你喜欢
转载自listen-raining.iteye.com/blog/2307205
今日推荐
周排行