Python-类中的变量和方法

类对象是一组相关的数据信息(属性),以及针对这组数据信息的操作(函数)的集合。

实例属性

用self修饰的属性为实例属性,这些属性通常是某个对象的属性,如一个人的名字。

class Student:
    def __init__(self,name):
        self.name=name

类属性

类属性也叫类变量,通常为这个类所有对象的集体特征。如一个类所有对象的个数,total_count确实是这个类的相关属性,但显然不属于某个对象个体 ,

class Student:
    min_age=16
    total_count=0
    def __init__(self,name):
        self.name=name

对于类变量,我们可以直接通过类名来访问,也可以通过实例来访问。

print(Student.min_age)
s1=Student("Ema")
print(s1.min_age)

 

成员方法

成员变量是类的个体的属性,成员方法是与之对应的类的个体的函数;类变量是属于整个类的全局属性,类方法是与之对应的全局函数。 

类方法

@classmethod
def next_id(cls):
    cls.total_count+=1
    return cls.total_count

1)函数上有一个特殊的标记@classmethod(函数装饰器),如名字所示,它用于标识一个函数为类方法。

2)函数的第一个参数名不再是我们是熟悉的self,而是cls(表示class)。在调用发生的时候,Python会把类(而不是类的某个实例)作为第一个参数传到这个函数里。 

静态方法

除了@classmethod,类中定义的方法还经常会用到另外一个函数装饰器@staticmethod,用于标识类的静态方法。静态方法被调用时,Python不会将类作为第一个参数传进来,而是会严格按照调用方提供的参数来调用。

class AreaCal:
    @staticmethod
    def cal_rec_area(width,height):
        return width*height
print(AreaCal.cal_rec_area(2,3))

 

在被调用的时候,因为没有类或者对象被自动传递,静态方法的参数列表会更简洁,逻辑会更清晰,并且因为减少了参数的传递,程序的执行会更快。当一个类方法的实现中并没有用到类变量时,我们就应该考虑把这个函数标记为静态方法 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值