对象
类对象 就是类的名字
class A:
pass
这里定义一个类,A就是类对象
实例对象 类创建的对象
a = A() 此时a就是一个实例对象
属性
类属行 就是类所拥有的属性,它被所有的类对象所共有,在内存中只有一个副本,类似于c++和Java中的静态成员变量.对于公有的类属性,类对象和实例对象都可以访问类属性.
class A(object):
name = "你好 " # 共有类属性
__age = 18 # 私有类属性
p = A()
print(p.name) # 实例对象调用类属性
print(A.name) # 类对象调用类属性
# print(p.__age) 错误,在外部不能访问私有类属性
print(p._A__age) # 正确,可以使用这种方式调用,但是不建议使用
p.age = 19 # 这是实例属性 , 在实例对象上面建立的属性
# A.age # 错误, 类属性不能调用实例属性 ,, 反之成立 , 实例属性可以调用共有类属性
方法
实例方法:
定义: 第一个参数必须是实例对象,一般用self来代替,通过它来传递实例的属性和方法(也可以传递类的属性和方法)
调用:只能由实例来调用
类方法:
定义:使用装饰器@classmethod,第一个参数必须是类对象,该参数名一般约定为cls,通过它来传递类属性和方法(不能传递实例对象和方法)
调用: 实例对象和类对象都可以调用
静态方法:
定义:使用装饰器你@staticmethod,参数没有要求,不需要self,cls.但是方法中不能使用类或实例的任何属性和方法.就是一个普通的函数放到了类中
调用: 实例对象和类对象都可以调用
对于用法而言,实例方法只能被实例对象调用,其他两种实例对象和类对象都可以调用
/*
上面一小段内容来自
作者:莫辜负自己的一世韶光
链接:https://www.jianshu.com/p/309caac72272
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
*/