码迷,mamicode.com
首页 > 编程语言 > 详细

Python面向对象

时间:2016-06-09 18:29:01      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:

1.创建一个类

class Employee:
    empCount = 0
    def __init__(self,name,salary):
        self.name = name
        self.salary = salary
        Employee.empCount +=1

    def displayEmployee(self):
        print "Name:",self.name,",Salary:",self.salary

#创建Employee类的一个对象
emp1 = Employee("Zara",2000)
emp2 = Employee("Manni",5000)

emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount

2.修改与删除属性

class Employee:
    empCount = 0
    def __init__(self,name,salary):
        self.name = name
        self.salary = salary
        Employee.empCount +=1

    def displayEmployee(self):
        print "Name??",self.name,",Salary:",self.salary


emp1 = Employee("Zara",2000)
emp2 = Employee("Manni",5000)
#修改属性
emp1.salary = "aa"
emp1.displayEmployee()
 #删除属性
#del emp2.salary;

3.Python对象销毁(垃圾回收)

Python使用了引用计数来追踪内存中的对象

一个内部跟踪对象,称为一个引用计数器

当对象被创建时,就创建了一个引用计数,当这个对象不再需要时,也就是说,这个对象的引用计数变为0时,它被垃圾回收。但是回收不是“立即”的,由解释器在适当的时机,将垃圾对象占用的内存空间回收

Python的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器

__del__是析构函数

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,"销毁"

pt1 = Point()
pt2 = pt1
pt3 = pt2
print id(pt1),id(pt2),id(pt3)
del pt1
del pt2
del pt3

4.类的继承

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):
    def __init__(self):
        print "调用子类构造方法"
    def childMethod(self):
        print "调用子类方法"

child = Child()#调用子类构造方法
child.childMethod()#调用子类方法
child.parentMethod()#调用父类方法
child.setAttr(200)
child.getAttr()#父类属性: 200

5.类的多继承

class A:
    pass
class B:
    pass
class C(A,B):
    pass

6.调用子类方法

class Parent:
    def myMethod(self):
        print "调用父类方法"
    
class Child(Parent):
    def myMethod(self):
        print "调用子类方法"

child = Child()
child.myMethod()#调用子类方法

7.运算符重载

class Vector:
    def __init__(self,a,b):
        self.a = a
        self.b = b

    def __add__(self,other):
        return Vector(self.a + other.a,self.b + other.b)

    def __str__(self):
        return "Vector(%d,%d)" %(self.a,self.b)

v1 = Vector(2,10)
v2 = Vector(5,-2)

print v1+v2#Vector(7,8)

8.声明类的私有成员

类的私有属性:__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用,在类的内部使用self.__private_attrs

类的室友方法:__private_method:两个下划线开头,声明该方法为私有方法,不能在类的外部调用,在类的内部使用self__private_method

class JustCounter:
    __secreCount =0
    publicCount =0

    def count(self):
        self.__secreCount+=1
        self.publicCount+=1
        print self.__secreCount

counter = JustCounter()
counter.count()
counter.count()
print counter.publicCount
print counter.__secreCount#报错,私有

Python面向对象

标签:

原文地址:http://www.cnblogs.com/2star/p/5572537.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!