python中类的属性和方法

python和java一样,是面向对象的编程语言。在python中,类的定义和java中类似,由关键字class来定义一个类,下面介绍一下python中类的情况,类中有属性(变量)和方法。

   一、类的定义            

class Animal:
    
      name = '' # 这个是类的属性,也叫实例变量,可以通过self.name来使用
      age = 4   # 这个是类变量,可以通过cls.age来使用

     def __init__(self, name, age):
        self.name = name
        self.age = age 

    def  bark(self):  # 这个是实例方法,实例方法通常第一个参数为self,代表实例对象本身
        print('animal %s age %d barks.' % (self.name, self.age))

     @staticmethod    # 这个是静态方法,可以由类或实例对象调用,没有区别
     def calc(a, b)
        return a+b

     @classmethod 
     def run(cls, s): # 这个是类方法,类方法通常第一个参数为cls, 代表类本身
         print('animal %s age %d runs a lot.' % (self.name, cls.age)) # 类方法内是不能调用实例属性的
         print('animal age %d runs at speed %d.' % (cls.age, s))


if __name__ == '__main__':
      a = Animal('xiaogou', 2)
      a.bark()
      print(a.calc(2, 4))
      a.run()

运行程序,看结果

把类方法中对self.name的调用去掉,重新运行。

这里的age 4 取的是类中定义的类变量age=4的值,并不是实例对象a的属性值。

综上,类的静态方法能被类或实例对象调用,类方法也能被类或实例对象调用,类的实例方法只能被实例对象调用

运行结果

二、设置及访问对象属性:没有init(self)函数时,可以直接设置并修改对象的属性(不建议)

init()函数主要用来初始化类。

如果属性/方法是所有实例共享的,应该保存到类对象中;如果属性/方法是某个实例独有的,应该保存到实例对象中。

class MyClass:
    pass


if __name__ =='__main__':
   mc1 = MyClass()
    
   mc1.name = 'xiaomi'  # 通过类的实例对象去添加属性
   print(mc1.name)
   mc1.name = 'hongmi'  # 通过类的实例对象去修改属性
   print(mc1.name)
   
   print(isinstance(mc1, MyClass) # 判断一个对象是否是类的实例
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值