概述
实例属性/方法 类属性/方法 静态方法
标签: python
实例属性和方法
在python中你通过类名创建的一个对象也叫作一个实例,比如:
class A(object):
pass
a = A()
在这个里面a
就是一个实例,而实例的属性一般在__init__
方法里面创建。比如:
class A(object):
def __init__(self):
self.name = "xx"
def f1(self):
print("f1")
a = A()
其中name
就是一个实例属性,而self代表具体实例,而f1
就是实例方法,对于实例属性和实例方法都是实例可以访问和调用的。
类属性和类方法
这个地方要和以前的语言比如Java
做区别,因为在python
中对于类属性的定义很像Java
中的成员变量,但是二者完全不一样。在python
中直接在类里面定义的属性都是类属性,比如:
class A(object):
n = 0
其中n就是一个类属性,类属性在使用的时候可以直接类名.属性
使用,对于上面例子可以直接A.n
进行访问。除此之外类属性也可以通过实例对象来访问,比如a.n
,但是不推荐。
类方法也是一个针对类的方法,你可以通过如下方法定义:
class A(object):
@classmethod
def ff(cls):
print("")
n = 0
在这个里面ff就是一个类方法,@classmethod
告诉编译器下面的方法是一个类方法,而cls
的作用和self
类似,只是cls代表类,而self代表一个实例,通过cls可以访问类中的其他属性和方法。对类方法的使用和类属性类似可以通过类名.方法名
来使用。
Notice
因为对于类属性,我们通过实例也可以访问,所以这个地方有个小问题可能会迷惑到你。看下面的例子:
class A(object):
n = 0
def __init__(self):
pass
a = A()
print(a.n)
a.n = 9
print(a.n)
print(A.n)
你会发现结果可能跟你想的不一样,因为我们用a.n = 9
了,但是最后输出的A.n
还是0,这是因为我们通过a.n = 9并不是访问,而是创建了一个实例对象,所以要注意这个地方。
- 通过
实例名.属性="xxx"
的时候,如果属性有(实例属性),则赋值;如果属性无,则增加一个实例属性。 - 通过
a = 实例名.属性
的时候,如果有这个实例属性,返回这个实例属性;如果无,则看是否有该类属性;如果还无,则报错; - 即要注意访问和赋值的区别
静态方法
静态方法和其他语言中的差不多,定义如下:
class A(object):
@staticmethod
def s():
pass
唯一区别就是上面多了个@staticmethod
代表是一个静态方法,静态方法一般不需要访问类中内容,也不需要访问实例内容,所以就定义成静态的。
区别
- 如果只需要访问实例属性/方法,则定义为实例方法
- 如果需要访问类属性/方法,则定义为类方法
- 如果什么都不需要,则定义为静态方法
最后
以上就是无语滑板为你收集整理的实例属性_方法 类属性_方法 静态方法实例属性/方法 类属性/方法 静态方法的全部内容,希望文章能够帮你解决实例属性_方法 类属性_方法 静态方法实例属性/方法 类属性/方法 静态方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复