2024-09-07-python中的class

一个简单的class示例如下所示:

class MyClass:

“”“A simple example class”“”

i = 12345#成员变量

def f(self):#成员方法

return ‘hello world’

要实例化一个class可以通过new instance=ClassName()的方式实例化。而成员变量和成员方法可以通过instance.name或者instance.function_name的方式调用。

上述MyClass的示例如下:

c=MyClass()

print(c.i)

#12345

print(c.f())

#hello world

复杂一点的例子

更复杂一点的例子:

class Complex:

i=[]

def init(self, realpart, imagpart):

self.r = realpart

self.i.append(imagpart)

调用方式:

x = Complex(3.0, -4.5)

print(x.r,x.i)

#3.0 [-4.5]

xx = Complex(3.0, -2)

print(xx.r,xx.i)

#3.0 [-4.5, -2]

这里添加了__init__()内置方法用于初始化class中的成员变量。这里可以看到类Complex的两个实例xxx中成员变量i的输出是不同的。关于类中的变量作用域将在下文介绍,暂且不表。

class中变量的作用域

首先让我们运行下面的代码:

def scope_test():

def do_local():

spam = “local spam”

def do_nonlocal():

nonlocal spam

spam = “nonlocal spam”

def do_global():

global spam

spam = “global spam”

spam = “test spam”

do_local()

print(“After local assignment:”, spam)

do_nonlocal()

print(“After nonlocal assignment:”, spam)

do_global()

print(“After global assignment:”, spam)

spam=‘spam’

scope_test()

print(“In global scope:”, spam)

得到的输出是:

After local assignment: test spam

After nonlocal assignment: nonlocal spam

After global assignment: nonlocal spam

In global scope: global spam

下面将对上述代码进行分析:

首先定义了全局变量spam,并赋值‘spam’。

接着实例化类scope_test(),执行类中的代码:

spam = “test spam”

do_local()

print(“After local assignment:”, spam)

do_nonlocal()

print(“After nonlocal assignment:”, spam)

do_global()

print(“After global assignment:”, spam)

  • 第一个变量spam的作用域是类scope_test,并将局部变量spam赋值为test spam

  • do_local()spam变量的作用域是do_local()方法,因而只是创建了一个本地变量,并赋值为local spam,但在方法之外失效。

  • 此时,print方法打印的spam变量是第一步中的局部spam变量,输出即是test spam

  • do_nonlocal()方法中将spam变量通过nonlocal关键字表示使用的是局部变量,因而此时的spam是第一步声明的spam局部变量。此时spam变量的值变为nonlocal spam

  • 按照上一步分系,此时打印的值应该是nonlocal spam

  • do_global()中通过global关键字声明使用的spam是全局变量,因而全局变量spam的值修改为global spam

  • 这里输出的是局部变量spam,因而输出是nonlocal spam

最后回到最外层的代码:

print(“In global scope:”, spam)

这里的变量spam是全局变量,根据上面的分析可以知道spam已经被修改为global spam,因而输出是global spam

以上介绍了pythonclass的基本使用方法,之后介绍了class中变量的作用域范围,了解之后基本就能掌握class的基本使用方法了。

[

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值