快捷搜索: 王者荣耀 脱发

Python-类对象方法和类实例对象方法

自己总结python类中类对象方法和类实例对象方法,其判断的方法是:

(1)首先看方法定义是否引用了self,带了self,肯定为实例对象方法。

(2)其次,看是否带参数,如果不带参数,肯定是类对象方法。

(3)除了以上两条外,至少带一个参数的方法定义,且没有classmethod标识的,肯定为实例对象方法(第一个参数实际上是类实例对象self,比较隐含),其他类对象方法。

关于类对象方法怎么使用,大家可以参考我写的类对象方法一篇博文:https://blog..net/weixin_42039090/article/details/80580012,。

请大家分析如下代码:

# -*- coding: utf-8 -*-

class Person(object):
    Count=0;
    _income=0;
    __Tel="13088888888"
    def __init__(self,name,number):
        self.name=name              #实例对象可以引用的两个成员:name和number,且公有的。
        self.number=number
    def __scolia__(self):   #这是实例对象方法,因为引用了self变量,当然,其他也可以哦。
        print("scola")
        return "scola"  
    def think(a):
        #这里用a,可以代替self。不加特别说明,这里默认think方法是实例方法。
        #判断根据是:要不没参数,要不加装饰器@classmethod,或者classmethod标识。
        print("name:",a.__class__.__name__)
        print("I am thinking")
    def Work():         #类方法,不是实例对象方法。
       print(Person.__Tel)
#      print(Person.number)  类对象方法不能直接访问类实例对象的成员,即使是公有的,也不行。
       Person.__Tel="13562334563"
       print(" I am working!")
       print(Person.__Tel)
    def _Eat():              #保护类对象方法,也不是实例对象方法,在类继承中要注意。
        print("I am Eating")
    def __Sleep():           #私有类对象方法,不是类实例对象方法。
        print(I am Sleeping)
#--------------类对象------------------------
print(Person.Count)
Person.Count+=1
print(Person.Count)
Person._income+=1000
print(Person._income)
#Person.__Tel #只能在类定义中引用,外部不能引用
Person.Work()
Person._Eat()
#Person.__Sleep() 只能在类定义中引用,外部不能引用
#---------------类实例化对象-------------------
a=Person()
Person.Count+=1 #类成员,实例一般不要轻易修改值。实例不改动类的属性值。a.Count没意义。
print(Person.Count)
a.think()       #定义时必须带参数。
a.__scolia__()  #定义时必须带参数。

#a.__Sleep()#更不能用。

大家,加油!

经验分享 程序员 微信小程序 职场和发展