您的位置:首页 > 编程语言 > Python开发

python的一些有关定义的语法细节

2016-03-07 20:08 309 查看

1.在class中定义方法

self 实例方法名称前面可以dual underline
__an_self_method


但类方法(没有self)不能双下划线,只能加单下划线

2.@staticmethod与@classmethod

@staticmethod

使得实例也可以调用类方法,但实质上是使得既与class无关,又与self无关的函数能够放在类里,作为实例属性、类属性调用

#最初
class T:
def bb(self):
T.a(2,4)

def a(c,d):
print(c+d)

>>>T.a(1,2)
3
>>>T().a(1,2)
TypeError: a() takes 2 positional arguments but 3 were given

#包装为实例的静态方法后
class T:
def bb(self):
T.a(2,4)

@staticmethod
def a(c,d):
print(c+d)

>>>T().a(1,2)
3


@classmethod

作为类属性,而不是实例属性

@classmethod
def withdraw(cls,amount):#cls default class method like self
pass


参考>http://www.wklken.me/posts/2013/12/22/difference-between-staticmethod-and-classmethod-in-python.html

3.时间字符串格式化

#2013-05-02-23:22:30
when=datetime.datetime.strptime('20130502T23:22:30','%Y%m%dT%H:%M:%S')

>>>when
datetime.datetime(2013, 5, 2, 23, 22, 30)


4.标识符命名

#_xx    :内部变量
#__xx   :据说是内部方法,但起码在python3.4里,果然只能作为实例方法,连类方法都不行
#__xx__ :pass
#xx_    :如果与关键字重复


参照一篇相对于本条,大约5年的知乎文

https://www.zhihu.com/question/19754941
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: