python中类对象、实例对象、类属性、实例属性、实例方法、类方法总结

1、类对象、实例对象、类属性、实例属性定义参见下列代码中的下划线解释

     定义部分的参考代码:

class People(object):  #类对象,一个类只有类对象,本例中为People。
    country = 'china'   #类属性处于类中但def ()函数外面的变量。  

     #实例方法,前面不加@classmethod,类中定义的参数为self的函数被调用                                                                                     #只能通过实例调用,实例方法可以访问类属性(此时变为实例属性)、实例属性

    def myCountry(self):

         self.myCountry=China
   #类⽅法,⽤classmethod来进⾏修饰
    @classmethod
    def getCountry(cls):#方法名:本例中为getCountry()
        return cls.country
    @classmethod
    def setCountry(cls,country):
         cls.country = country #实例属性,def()函数中的变量
 
p = People()                      #实例对象,本例中为p,类对象可以被赋值给多个变量(实例化),这些变量就是实例对象
print p.getCountry()           #类方法可以⽤过实例对象调用,输出为china
print People.getCountry()  #类方法可以通过类对象调用,输出为china
p.setCountry('japan')
print p.getCountry()           #输出为japan
print People.getCountry()  #输出为japan

2、类属性调用

                           类内:类名.类属性(People.country);实例对象.类属性(self.country)此方式将类属性改为实例属性

                           类外:类名.类属性(People.country);实例对象.类属性(p.country)此方式将类属性改为实例属性。

3、实例属性调用

                               类内:实例对象.实例属性(self.country)

                               类外:实例对象.实例属性(p.country)

                               可以看出实例属性一般只被实例对象调用,若要被类调用,需要在参数传递中添加类对象,多此一举。

4、实例方法、类方法的定义参见代码中下划线解释。

5、实例方法与类方法对属性修改的区别

            类⽅法:可以通过实例名.方法名,也可以通过类名.方法名调用;

                          第⼀个参数是类对象cls,通过cls引⽤的必定只能是类对象的属性和⽅法,只能修改类属性,参见代码 一。

            实例⽅法:只能通过实例名.方法名调用;

                              第⼀个参数是实例对象self,通过self引⽤的可能是类属性、也有可能是实例属性(这个需要具体分析)

                              不过在存在相同名称的类属性和实例属性的情况下,实例属性优先级更高,类属性被实例调用修改后变为实                                  例属性,未被调用修改则仍然为类属性

实例对象、类对象对实例方法和类方法的调用总结为下表:

6、调用类方法、实例方法的参考代码:

class getMin():
    # 实例方法
    def fun(self, arr, n):
        print(arr[n-1])
    # 类方法
    @classmethod
    def class_fun(cls):
        print("this is class function")

if __name__ == "__main__":
    arr = input().strip().split(" ")
    int_arr = []
    for item in arr:
        int_arr.append(int(item))
    n = int(input())

    instance = getMin()
    # 用实例调用实例方法
    instance.fun(int_arr, n)
    # 用类调用实例方法,类.实例方法,此时称为函数调用,此处必须在参数中加上类名,用的少,因为多此一举。
    getMin.fun(instance, int_arr, n)
    # 实例调用类方法
    instance.class_fun()
    # 类调用类方法
    getMin.class_fun()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值