Python学习笔记

绑定方法与非绑定方法

在类的绑定方法的参数列表中有self参数,非绑定方法的参数列表中没有self参数
使用对象调用非绑定方法会出错,使用类调用绑定方法也会出错
a=A()是实例化对象
a=A 是给类A加了一个别名a,或者说又加了一个标签a`

>>> class A:
	def print():
		print("sadfad")
	def print2(self):
		print("adfag")
>>> a=A()
>>> a.print()
Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    a.print()
TypeError: print() takes 0 positional arguments but 1 was given
>>> a.print2()
adfag
>>> A.print()
sadfad
>>> A.print2()
Traceback (most recent call last):
  File "<pyshell#24>", line 1, in <module>
    A.print2()
TypeError: print2() missing 1 required positional argument: 'self'
>>> a=A
>>> a.print()
sadfad
>>> a.print2()
Traceback (most recent call last):
  File "<pyshell#27>", line 1, in <module>
    a.print2()
TypeError: print2() missing 1 required positional argument: 'self'

类方法

使用@classmethod修饰,可以直接使用A.bar()形式调用,第一个参数为这个类

class Foo:
	lang="Java"
	def __init__(self):
		self.lang="python"
	@classmethod
	def get_class_attr(cls):
		return cls.lang
print(Foo.lang)
r=Foo.get_class_attr()			#Foo作为参数cls被自动传入
print("get class attribute:",r)
f=Foo()
print("instance attribute:",f.lang)

装饰器

@property
@staticmethod
@classmethod

__slots__定义的属性略类似于C++/JAVA中的静态变量,但是如果类未对属性赋值,实例可以在自己作用域内定义一个同名属性
此外,使用__slots__之后如果希望对实例新建一个变量,只能对类进行操作,不可以直接对实例进行添加

r表示原始字符串

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值