Python3 面向对象编程
来源:互联网 发布:java base64类 编辑:程序博客网 时间:2024/05/16 11:10
Python3 面向对象编程
类
- 定义类通过
class
关键字:
class Student(object): pass
class
关键字后是类名,类名通常以大写字母开头- 之后是
(object)
,表示该类从哪个类继承下来。如果没有合适的继承类,就使用object
类,这是所有类最终都会继承的类 __init__
方法,在创建实例的时候可以把必须绑定的属性填写进去。
class Student(object) def __init__(self,name,score): self.name=name self.score=score
__init__
方法后的第一个参数永远是self
,表示创建的实例本身。在__init__
内部,可以把各种属性绑定到self
,因为self
指向创建的实例本身。
数据封装
class Student(object): def __init__(self,name,score): self.name=name self.score=score def print_score(self): print('%s:%s' %(self.name,self.score))
- 定义一个方法,除了第一个参数是
self
之外,其他与普通函数一样。 - 调用一个方法,只需要在实例变量上直接调用,除了
self
不用传递,其他参数需要正常传递
访问限制
- 如果要让内部属性不被外部访问,可以加
__
变成私有变量,只有内部可以访问,外部不能访问。
class Student(object): def __init__(self,name,score): self.__name=name self.__score=score def print_score(score): print('%s:%s' %(self.__name,self.__score))
获取对象信息
- 使用
type()
判断对象类型 - 使用
types
模块中定义的常量判断是否是函数
import typesdef fn(): passtype(fn)==types.FunctionType
- 判断class的类型,使用
isinstance()
函数 - 获得一个对象所有的属性和方法,使用
dir()
,返回一个包含字符串的list。
*类似__xxx__
的属性和方法在Python中有特殊用途。如__len__
方法返回长度。调用len()
函数获取一个对象的长度,实际在len()
内部会自动调用该对象的__len__()
方法。以下等价
>>>len('ABC')3>>>'ABC'.__len__()3
getattr()
、setattr()
、hasattr()
,可以操作一个对象的状态。
clas MyObject(object): def __init__(self): self.x=9 def power(self): return self.x * self.xobj=MyObject()>>>hasattr(obj,'x')True>>>obj.x9>>>hasattr(obj,'y')Flase>>>setattr(obj,'y',19)>>>hasattr(obj,'y')True>>>getattr(obj,'y')19>>>obj.y19
实例属性和类属性
- Python是动态语言,根据类创建的实例可以任意绑定属性
给实例绑定属性的方法:通过实例变量,或self
变量
class Student(object): def __init__(self,name):s=Student('Bob')s.score=90
- 若类本身需要绑定一个属性,可以直接在类中定义属性,即类属性。
类属性虽然归类所有,但类的所有实例都可以访问。
class Student(object): name='Student'
- 不要把实例属性和类属性使用相同的名字,相同名称的实例属性将屏蔽掉类属性。
阅读全文
0 0
- Python3 面向对象编程
- 简明Python3教程 13.面向对象编程
- 简明Python3教程 13.面向对象编程
- python3.2 简单面向对象编程
- 简明Python3教程 13.面向对象编程
- Python3 基础:面向对象编程(上)
- Python3 基础:面向对象编程(下)
- python3面向对象编程一(类)
- Python3.X之面向对象编程笔记
- Python3面向对象编程笔记(一)
- Python3.5——面向对象编程
- Python3面向对象编程(1):面向对象基本概念
- python3-面向对象
- python3的面向对象
- Python3 面向对象
- Python3 面向对象
- Python3之面向对象
- 【Python】Python3 面向对象
- Android GridView自适应高度(不出现滚动条)
- js之表单校验
- 入行半年,希望在这条路走远
- 引入js、css等文件的路径问题
- java static
- Python3 面向对象编程
- 如何分叉山寨币开发底层技术并变成私链
- Apache2 Ubuntu Default Page
- python学习心得笔记二
- Python-virtualenv创建虚拟环境
- ajax提交表单
- LeetCode #10
- python3刷博客积分
- SSD 的安裝和配置