python-类-对象-属性-方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ZHH_Love123/article/details/82829569

在这里插入图片描述类属性和实例属性
实例方法(对象方法):
# 如果想在方法中直接使用self 就使用实例方法
def 方法名(self):
代码逻辑
执行实例方法: 对象名.方法名()
类方法
# 如果想在方法中直接使用cls 就使用类方法
@classmethod
def 方法名(cls):
代码逻辑
执行类方法: 类对象(类名).方法名 或者 对象名(实例对象).方法名
静态方法
# 如果不使用self 也不使用cls 就可以用静态方法
@staticmethod
def 方法名():
代码逻辑
执行静态方法: 类对象(类名).方法名 或者 对象名(实例对象).方法名
类方法
在这里插入图片描述属性
是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数(当然可以用其他名称的变量作为其第一个参数,但是大部分人都习惯以’cls’作为第一个参数的名字,就最好用’cls’了),能够通过实例对象和类对象去访问。

类方法还有一个用途就是可以对类属性进行修改:
p.set_country(‘japan’)
print(p.get_country())
print(People.get_country())
静态方法
需要通过修饰器@staticmethod来进行修饰,静态方法不需要多定义参数,可以通过对象和类来访问

总结
1.从类方法和实例方法以及静态方法的定义形式就可以看出来,类方法的第一个参数是类对象cls,那么通过cls引用的必定是类对象的属性和方法;
2.实例方法的第一个参数是实例对象self,那么通过self引用的可能是类属性、也有可能是实例属性(这个需要具体分析),不过在存在相同名称的类属性和实例属性的情况下,实例属性优先级更高。
3.静态方法中不需要额外定义参数,因此在静态方法中引用类属性的话,必须通过类实例对象来引用

类属性与实例属性
类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本,对于公有的类属性,在类外可以通过类对象和实例对象访
print(p.name) # 正确
print(People.name) # 正确
print(p.__age) # 错误,不能在类外通过实例对象访问私有的类属性
print(People.__age) # 错误,不能在类外通过类对象访问私有的类属性
如果需要在类外修改类属性,必须通过类对象去引用然后进行修改。如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,并且之后如果通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性。

猜你喜欢

转载自blog.csdn.net/ZHH_Love123/article/details/82829569
今日推荐