那些被渐渐遗忘的python知识点
Posted 夏小悠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了那些被渐渐遗忘的python知识点相关的知识,希望对你有一定的参考价值。
文章目录
前言
正所谓:时运则存,不用则亡,这些有关python的知识点你还记得多少。
1. @property
@property
装饰器会将方法转换为相同名称的只读属性,即使用@property
装饰器修饰的方法调用时不需要加()
,可以与所定义的属性配合使用,这样可以防止属性被修改。
class A:
def __init__(self):
self.name = 'xiaoyou'
self.age = 3
self.__height = 20
self.__weight = 10
def height(self):
return self.__height
@property
def weight(self):
return self.__weight
if __name__ == "__main__":
obj_a = A()
print(obj_a.height()) # 本质上调用的是私有属性,但方式是实例的方法
print(obj_a.weight) # 不需要加 (), 即说明调用的是类中的属性
2. @classmethod
@classmethod
将函数转换成为一个类方法,最常见的用途是定义备选构造方法,即调用@classmethod
修饰的函数来完成实例的初始化。
class A:
def __init__(self):
self.name = 'xiaoyou'
@classmethod
def hello(cls):
print("hello, xiaoyou!")
if __name__ == "__main__":
A.hello() # 不需要实例化
3. @staticmethod
@staticmethod
将函数转换成为一个静态方法,不需要先声明实例对象,可通过类本身直接调用,就像调用普通的函数那样。
class A:
def __init__(self):
self.name = 'xiaoyou'
@staticmethod
def hello(name): # 既不需要传递类对象cls也不需要传递实例对象self
print("hello, !".format(name))
if __name__ == "__main__":
blog_name = "xiaoyou"
obj_A = A() # 实例化
obj_A.hello(blog_name)
A.hello(blog_name) # 也可以不实例化
以上是python
中内置的三个装饰器,目前也就这三个:
(1)
@staticmethod
:把函数转换成静态方法
(2)
@classmethod
:把函数转换成类方法
(3)
@property
:把函数转换成成类的属性
4. self与cls
self
指的是实例,而cls
指的是类,使用 self
关键字,我们可以访问实例变量和类属性,而使用cls
关键字,我们只能访问类的成员。
self
作为参数传递给实例方法,而cls
作为参数传递给类方法,如果我们使用self
初始化变量,它们的作用域就是实例的作用域。但是,使用cls
初始化的变量将类作为其作用域。
self
和cls
没有特别的含义,作用只是把参数绑定到普通的函数上, 不一定非得是self
或cls
,可以换成别的xxx
以上是关于那些被渐渐遗忘的python知识点的主要内容,如果未能解决你的问题,请参考以下文章