带你走进 @ 机器人时代 Discover 点击上面蓝色文字,关注我们 ![]()
通常情况下,我们希望用类对象来调用实例方法,但是要注意的是,通过类名直接调用实例方法时,Python 并不会自动给 self 参数传值。 如果想通过类名直接调用实例方法,就必须手动为 self 参数传值。我们来看看下面的代码: #定义一个类class CL: def info(self): print('这是一个类方法')#通过类名直接调用实例方法d=CL()CL.info(d)运行结果:这是一个类方法 我们也可以修改代码,直接传递任意的参数:
我们在学习类编程的时候,不止一次提到过命名空间。实际上,在所有的class关键字修饰的代码块中,都可以看成独立的空间。 在这个独立的空间里面,所有的属性和方法都是独立的。所有的属性都是在这个空间里面的变量,所有的方法都是这个空间的函数。 不过,在程序中我们应该如何调用它们呢?我们来看看一个实例: a='这是一个全局变量'def say(): print('这是一个全局函数的方法')class st: def say1(): print('这是一个类空间里面的函数方法') b='这是一个类空间的变量'print(a)say()print(st.b)st.say1()运行结果:这是一个全局变量这是一个全局函数的方法这是一个类空间的变量这是一个类空间里面的函数方法
如果一个类的某个属性有数据描述符,那么每次查找这个属性时,都会调用描述符的 __get__() 方法,并返回它的值;同样,每次在对该属性赋值时,也会调用 __set__() 方法。我们可以看看下面的例子: class Ace: def __init__(self, i = None, name = '描述符的数据'): self.v = i self.name = name def __get__(self, a, c): print('这是get查找的',self.name) return self.v def __set__(self, s, b): print('他是',self.name) self.v = bm = Ace(5,'输入新的变量')print(m.name)class myClass: x = Ace(10,'调用类输入的变量')n=myClass()print(n.x)输出结果:输入新的变量这是get查找的 调用类输入的变量10
继续坚持学习,每天都能进步一点!!! 往期回顾:
本文引用和摘录相关内容,请联系侵删。 - END - 最后,文章有帮助到你的话【点赞在看】 |
|