类的成员

类的成员变量

Python里描述数据结构是使用类成员变量的方式,从上面的例子可以看到这样描述:

self.wndClass = WNDCLASSEX()

这行代码是写在类的构造函数里,通过使用类自身对象self来给类添加成员变量wndClass 。由于在Python语言里没有声明,每增加一个类成员变量,就是通过赋值的方式产生。不过,要注意的是Python语言里的成员变量是可以动态添加的,不但可以在构造函数里添加,也可以在成员函数里添加,更可以在类对象生成实例之后添加。如下面的例子:

class Foo:
    def __init__(self):
        print('__init__')
    def __del__(self):
        print('__del__')
    def foo(self):
        print('foo')
        self.sum = 100
        print('%d' % (self.sum))
test = Foo()
test.foo()
test.newsum = 200
print(test.newsum)

在这个例子里,self.sum = 100这行代码是在类成员函数foo里添加成员变量;test.newsum = 200这行代码是在对象创建之后添加成员变量。类的成员变量在Python里是没有私有和公有的权限之分,所有成员变量都是公有的权限,也就是说对外面所有代码来说成员变量都是可以访问的。面对没有私有权限这个问题主要靠开发人员养成良好的习惯,不要在类外部访问类的成员变量,而是通过类的成员函数来调用,这样就会让封装的特性更好,如果类成员变量发生变化,如果类成员函数算法发生变化,类外面的调用代码都可以不作出改变,接口保持一致性,降低相互的依赖性,提高代码的复用性。

 

类的成员函数

在上面的例子里,像Registerfoo都是类的成员函数,它的格式一般是这样:

def foo(self):

        print('foo')

        self.sum = 100

        print('%d' % (self.sum))

也就是有这样的形式:

def 函数名称(self, 参数列表):

函数块

你看到这种形式时,也许会奇怪,为什么要有self参数?这个就是成员函数与普通函数的区别,比如下面的例子:

class Foo:
    def __init__(self):
        print('__init__')
    def __del__(self):
        print('__del__')
    def foon():
        print('foon')   
    def foo(self):
        print('foo')
        self.sum = 100
        print('%d' % (self.sum))

        Foo.foon()
        
test = Foo()
test.foo()
test.newsum = 200
print(test.newsum)

Foo.foon()

在这个例子里,非类成员函数foon,它的调用方式与成员函数的调用方式不一样,它使用的是类名和函数名称:Foo.foon(),而成员函数使用实例对象和函数名称:self.foo()。非成员函数可以没有产生实例的情况下使用,比如Foo.foon()。非成员函数比较像C++语言里的静态成员函数,不需要创建实例,但又达到命名空间的分隔作用。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值