Python3学习笔记-实例变量、实例方法、类变量、类方法、属性方法、静态方法
实例变量/成员变量:在类的声明中,属性是用变量来表示的
实例方法:在类中声明的方法,例如:my(self),必须实例化之后才可以使用,否则会报错
类变量:公共的变量,每个实例都可以用。
类方法: @classmethod
1、不用实例化就可以直接调用。
2、它可以通过cls使用类变量
3、它不能调用这个类里面的其他实例方法和实例变量
4、不想实例化的时候,就可以定义成类方法
属性方法(self):@property
@property ,这是个装饰器,把函数变成一个属性方法,如果这个方法没有入参的话,那就可以变成一个属性方法。
看起来像属性的一个方法,将没有入参的函数变为一个属性方法(类似于变量),结果是函数的返回值
在使用的时候可以如下面代码所示的 feng.simle, 而不是像其他的方法一样加(), 如 feng.simle()
class Person: @property #属性方法 def smile(self): return 'haha' feng = Person()
print(feng.smile)#属性方法像属性一样调用 # print(feng.smile())#报错,调用属性方法不用加括号
静态方法:@staticmethod
你不想实例化的时候,就可以定义成类方法
静态方法就是一个普通函数,只不过是写在类里面而已,它用不了类变量、类方法、实例变量、实例方法
下面从实例中了解这几个知识点的具体用法,代码如下:
class Baby(): country = 'China' #类变量,公共的变量,每个实例都可以用 def __init__(self,name): #带了self的都是实例方法,必须实例化了之后才能调用,否则会报错 self.name = name #实例变量,也叫成员变量 print('self的内存地址',id(self)) def cry(self): #实例方法 print('哇哇哇') @property #这是一个装饰器,也叫属性方法,hhh函数就不能传参数了。如果函数没有入参就可以写property,调用的时候不能加括号了。 def hhh(self): return 198 # b = Baby('a') # print(b.hhh) #调用的时候不能加括号,看起来像属性的一个方法。 @classmethod #类方法 def xm(cls): #cls代表的就是baby print(cls.country) print('我是类方法') # print(cls.name) #cls不能调用实例变量,会报错 # cls.cry() #cls不能调用实例方法,会报错 @staticmethod #静态方法 def xh(): print('这个是静态方法,它和一个没写在类里面的函数一样')
class Baby(): country = 'China' #类变量,公共的变量,每个实例都可以用 def __init__(self,name): #带了self的都是实例方法,必须实例化了之后才能调用,否则会报错 self.name = name #实例变量,也叫成员变量 print('self的内存地址',id(self)) def cry(self): #实例方法 print('哇哇哇') @property #这是一个装饰器,也叫属性方法,hhh函数就不能传参数了。如果函数没有入参就可以写property,调用的时候不能加括号了。 def hhh(self): return 198 # b = Baby('a') # print(b.hhh) #调用的时候不能加括号,看起来像属性的一个方法。 @classmethod #类方法 def xm(cls): #cls代表的就是baby print(cls.country) print('我是类方法') # print(cls.name) #cls不能调用实例变量,会报错 # cls.cry() #cls不能调用实例方法,会报错 @staticmethod #静态方法 def xh(): print('这个是静态方法,它和一个没写在类里面的函数一样') # '''调用静态方法''' Baby.xh() # '''调用类变量''' Baby.country='USA' #类变量是可以直接通过类名.xxx来进行修改的。 fgf = Baby('fengfeng') fgf.country = 'UK' #不会改变类变量的值,只是改变了fgf这个实例中country的值 print(fgf.country) wz = Baby('wuzhen') wz.country = 'AUS' print(wz.country) # '''装饰器,属性方法''' b = Baby('baby') print(b.hhh) #调用时直接对象.函数名,不需要加括号,看起来像属性的方法 # '''self''' wz = Baby('wuzhn') print('wuzhen的内存地址',id(wz)) #与实例化时self的内存地址一致 fgf = Baby('fengfeng') print('fengfeng的内存',id(fgf)) #与实例化时self的内存地址一致
本类对象:self
类中的self代表的是本类对象。即self代表的是实例化之后的对象。
因为函数里面的变量都是局部变量,出了函数就不能用了。用self给对象绑定了之后,就可以在类中self.xx随便用了
posted on 2018-05-24 17:40 fengyelan2233 阅读(168) 评论(0) 编辑 收藏 举报