python 面向对象基础
2016-10-05 00:00
531 查看
# !/usr/bin/env python # coding=utf-8 # 类的简单测试 class Person(object): """这是类的文档""" # 构造函数,Python中对象的属性值动态添加 # python 不不支持函数重载 def __init__(self, name, id): self.name = name # 实例变量 self.id = id print '父类的__init__' self.__test() def show_name(self): print 'Person name is ', self.name def __getattr__(self, item): print "__getattr__ >>> " return "xxx" # 析构方法,删除对象 # 调用示例: del person def __del__(self): pass # 类的私有方法,不能在类外部进行调用 # 两个下划线为私有方法的声明 def __test(self): print '__test 是私有方法' # print Person.__doc__ 打印类文档 # print Person.__name__ 打印类名 # print Person.__dict__ 打印类类的属性 # 创建实例对象 person = Person('y', 01) person.name = 'yyy' # 使用get访问属性 print person.__getattr__(person.name) # del person.name # 删除这个属性 """ 使用get set 访问属性值 getattr(obj, name[, default]) : 访问对象的属性。 hasattr(obj,name) : 检查是否存在一个属性。 setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。 delattr(obj, name) : 删除属性。 """ # Python 的引用计数(GC机制) # print id(person) # 打印对象的ID # 引用变化,引用指向的对象没有发生变化 a = person b = a c = person # id值均相同 print id(a) print id(b) print id(c) # 继承 """ 1:在继承中基类的构造(__init__()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。 2:在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别于在类中调用普通函数时并不需要带上self参数 3:Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。 (先在本类中查找调用的方法,找不到才去基类中找)。 """ class Student(Person): name = 'yangtianrui' # 类变量,对象可以访问类变量 def __init__(self, name, id): # 需调用父类的构造器,必须显示声明 Person.__init__(self, name, id) # 访问类变量 print '类变量', self.__class__.name pass def display(self): # 调用父类方法的两种形式,__init__方法也一样 # Person.show_name(self) # 使用类名前缀调用父方法 # 也可以使用super()执行父类的函数 super(Student, self).show_name() # 必须继承自Object # 类的静态方法 @staticmethod def static_method(a, b): print a + b # 类的类方法 # 类方法是将类本身作为对象的方法 @classmethod def class_method(cls, x): print cls.name * x # 将类名输出x遍 student = Student('yyytttrrr', 10) # 调用静态方法 student.static_method(10, 20) # 也可以使用对象进行调用 Student.static_method(10, 20) # 调用类方法 student.class_method(2) Student.class_method(3) # 类变量和实例变量 # 类变量定义在类的定义之后,实例变量则是以为self.开头
相关文章推荐
- python 面向对象基础
- python面向对象基础
- Python3 基础:面向对象高级编程(中)
- python——面向对象基础
- 我与python约个会:23. 企业级开发基础4:面向对象
- Python基础(面向对象之类成员与修饰符)
- Python3 基础:面向对象高级编程(上)
- Py修行路 python基础 (十九)面向对象进阶(下)
- Python基础之六面向对象高级编程
- 我与python约个会:27. 企业级开发基础8:面向对象扩展
- Python基础教程(九):面向对象、正则表达式
- Python进阶三:面向对象基础
- 从零开始学Python第六周:面向对象基础(需修改)
- python第六天学习记录——面向对象基础
- Python类基础知识(面向对象基础)
- python面向对象基础
- python 自动化之路 day 面向对象基础
- python 自动化之路 day 07 面向对象基础
- Python面向对象基础
- 我与python约个会:24. 企业级开发基础5:面向对象特征(封装)