各位用户为了找寻关于python 类详解及简单实例的资料费劲了很多周折。这里教程网为您整理了关于python 类详解及简单实例的相关资料,仅供查阅,以下为您介绍关于python 类详解及简单实例的详细内容
python 类详解
类
1.类是一种数据结构,可用于创建实例。(一般情况下,类封装了数据和可用于该数据的方法)
2.Python类是可调用的对象,即类对象
3.类通常在模块的顶层进行定义,以便类实例能够在类所定义的源代码文件中的任何地方被创建。
4.实例初始化
instance = ClassName(args....) 类在实例化时可以使用__init__和__del__两个特殊的方法。 ? 1 2 3 4class
ClassName(base):
'class documentation string'
#类文档字符串
class
suite
#类体
base:超类是一个或多个用于继承的父类集合
类体可以包括:声明语句、类成员定义、数据属性、方法
如果类不存在继承关系,就不提供括号里的base
?
1
2
3
4
5
6
7
8
9
10
class
FirstClass():
spam
=
30
#类数据属性
def
display(
self
):
#类方法
print
self
.spam
x
=
FirstClass()
#创建类实例
x.display()
#方法调用
>>>
30
dir
(FirstClass)
>>> [
'__doc__'
,
'__module__'
,
'display'
,
'spam'
]
class语句类似def,是可执行代码;直到运行class语句后,类才会创建
class语句内,任何赋值语句都会创建类属性
每个实例对象都会继承类的属性并获得自己的名称空间
Python类方法及调用
实例(对象)包含的属性
可调用的属性:方法 数据属性在OOP中,实例就像是带有“数据”的记录,而类是处理这些记录的“程序”
通过实例调用方法相当于调用所属类的方法来处理当前实例。 比如之前的代码例子,x.display() 会被自动转换为 FirstClass.display(x),即调用类的方法来处理实例x 因此,类中每个方法必须有self参数,它隐含当前实例之意 在方法内对self属性做赋值运算会产生每个实例自己的属性 Python规定,没有实例,方法不允许被调用,这是‘绑定'(binding)的概念 class语句中的赋值语句会创建类属性,如前面例子的spam 在类方法中对传给方法的特殊参数self进行赋值会创建实例属性Python构造器
创建实例时,Python会自动调用类中的__init__方法,以隐形的为实例提供属性
__init__方法被称为构造器 如果类中没有定义__init__方法,实例创建之初仅仅是一个简单的名称空间。 __init__的第一个参数一定是self ,self 变量用于在类实例方法中引用方法所绑定的实例。因为方法的实例在任何方法调用中总是作为第一个参数传递的,self 被选中用来代表实例。你必须在方法声明中放上 self,但可以在方法中不使用实例(self)。如果你的方法中没有用到 self , 那么请考虑创建一个常规函数,除非你有特别的原因。毕竟,你的方法代码没有使用实例,没有与类关联其功能,这使得它看起来更像一个常规函数。在其它面向对象语言中,self 可能被称为 this。 __init__不能返回任何对象 析构函数:__del__ 构造函数是必要的,而析构函数常常可以不考虑(Python解释器会自己回收) ? 1 2 3 4 5 6 7 8 9 10 11class
MyClass():
def
__init__(
self
, name):
self
.name
=
name
print
'My name is '
+
self
.name
def
__del__(
self
):
print
self
.name
+
' is dead.'
i1
=
MyClass(
'Shaw'
)
>>> My name
is
Shaw
del
i1
>>> Shaw
id
dead.
类的特殊属性
使用dir()或__dict__,查看类或实例的属性 __doc__:获取文档字符串 __base__:获取所有父类 __module__:类所在的模块 __name__:实例所属类的名字Python类方法中可用的变量
实例变量:self.变量名 局部变量:方法内部创建的变量,可直接使用 静态变量:类中定义的变量。类名.变量名 全局变量:直接使用继承
继承描述了基类的属性如何‘遗传'给派生类
子类可以继承他的基类的任何属性,包括数据属性和方法 一个未指定基类的类,其默认有一个叫object的基类 Python允许多重继承(可以继承多个父类)感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://www.jianshu.com/p/3c958b309e1a