Python面向对象的几个基本概念
- 类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
- 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
- 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
- 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(
override
),也称为方法的重写。 - 实例变量:定义在方法中的变量,只作用于当前实例的类。
- 继承:即一个派生类(
derived class
)继承基类(base class
)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog
类型的对象派生自Animal
类,这是模拟”是一个(is-a
)”关系(例图,Dog
是一个Animal
) - 实例化:创建一个类的实例,类的具体对象。
- 方法:类中定义的函数
- 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
类的创建
格式:
class ClassName: '类的帮助信息' #类文档字符串
def init(self): #self为类的实例对象,每个方法中必须要的参数但不需要在调用的时候传入. print "这是类的构造函数" class_suite #类体
# 类的实例化:
customer= ClassName();
python内置类属性
- dict : 类的属性(包含一个字典,由类的数据属性组成)
- doc :类的文档字符串
- name: 类名
- module: 类定义所在的模块(类的全名是’
main.className
‘,如果类位于一个导入模块mymod
中,那么className.module
等于mymod
) - bases: 类的所有父类构成元素(包含了一个由所有父类组成的元组)
python 类的继承
语法格式: class className(fartherClassName)
: python
中类的继承的一些基础语法:
- 继承父类的
__init__
构造函数不会被自动调用,他需要在当前子类的构造函数中自行调用调起来. - 调用父类方法时,需要加上父类的类名前缀,并且需要添加上
self
参数变量 - 方法执行顺序:子类—>父类
- 支持多继承,多继承用元组方式添加
issubclass()
:布尔函数判断一个类是另一个类的子类或者子孙类,语法:issubclass(sub,sup)
isinstance(obj, Class)
:布尔函数如果obj
是Class
类的实例对象或者是一个Class
子类的实例对象则返回true
。
python 类的方法和属性
1)类的私有属性 __private_attrs
:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs
。
2)类的方法 在类的内部,使用 def
关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数 self
,且为第一个参数
3)类的私有方法 __private_method
:两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用 self.__private_methods
示例代码
#!/usr/bin/python
# -*- encoding:utf-8 -*-
'''用于了解类的使用的'''
__metaclass__ = type
class User:
'is a basic user info class'
tag = "user"
def __init__(self,*params):
print "create %s" % self.__class__.__name__
self.params=params
def showName(self):
print "this user name is:",self.params[0]
return self.params[0]
def __del__(self):
#析构方法, 删除一个对象
print "destory %s" % self.__class__.__name__
user= User("hfai",23,"monkey")
print user.showName(),"and params is:",User.tag
print "user dicts is:",User.__dict__
print "user doc is:",User.__doc__
print "user module:",User.__module__
print "user name is:",User.__name__
print "user bases is:",User.__bases__
#del user
#class about extends father
class SubClass(User):
def __init__(self):
print "this is origion function."
def showName(self):
print "this is children methods."
return
a =SubClass()
# a.showName()
# a.showName()
SubClass.showName(a) #简写方式.