Python高级编程---面向对象

#!/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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值