类的成员(*变量与*方法)

class Person:
    country = '中国' #类变量,一般是从所有的对象中都存在的共性,例如所有的人都是中国人
    def __init__(self,name,Birthday):
        self.name = name   #实例变量或字段(数据库中)或属性(Java中)
        self.Birthday = Birthday
    def Fly(self): # 实例方法
        print('i think you will Fly ')

    @classmethod  #类方法的标志 每写一个类方法上面都要带这个标志
    def lei(cls): # cls 与self 作用基本相同,不同是self 传递的是对象的引用,而cls 传递的是类名的引用
        print(cls)
        print('我是类方法')

    @staticmethod #静态方法的标志 每写一个静态方法上面都要带这个标志
    def jingtai(): #相当于类中的 函数调用的时候与调用类方法的一样
        print('我是静态方法')

    @property  #如果一个属性需要通过某个表达式计算才能得到的,但又想当属性来使用
    #@property属性方法的作用就是通过@property把一个方法变成一个静态属性
    def JiSuanAge(self):
        '''属性方法只能含有一个self 参数,需要有返回值,不能赋值 
调用的时候,不需要写括号,直接当成属性变量来用就可以''' 

    return 2018 - self.Birthday

# # 类变量与实例变量之间的区别
#
print(Person.country)
#打印的是类变量
# a = Person('cisco',11)
# print(a.country) # 由于么有在实例变量中找到country,所以向上查找,打印的还是类中变量
# #
Person.country = '美国' # 直接对类变量进行修改
#
print(Person.country)
#
print(a.country) #由于么有在实例变量中找到country, 所以向上查找,打印的还是类变量内容
# #
b = Person('bb',11)
#
# b.country = '俄国'# 在b对象中创建一个实例变量
# print(b.country) #直接访问的是b对象中的实例变量
# 类方法,静态方法与实例方法之间的区别
#
a = Person('马云',50) #创建对象
#
a.Fly()#实例方法的调用 对象.实例方法 #
#
print(Person)# 证明类方法调用的时候默认是对cls 传递的是类名的内存地址的引用
# Person.lei()#类方法的调用 类名.类方法 #
#
Person.jingtai() #静态方法的调用, #
#
# 在实例中调用类方法
# a = Person('马云',50)
#
a.lei() #即使是通过对象去访问类方法,但默认传递给cls的还是类名 #
a
= Person('马云',1994)
#创建对象 print(a.JiSuanAge)
# 总结:普通的方法,可以通过实例化之后,通过对象.方法进行调用,在类中也可以通过使用self.方法进行调用,实例变量也一样

# 类方法直接通过使用 类名.方法,直接进行调用,对象也可以通过 对象.类方法名进行调用类的方法
#
但是静态的方法是完全独立出来的,只是调用的时候通过使用类名进行调用,其余的与类没有多大的关系

# 需要注意的是类方法只能访问类变量,不能访问实例变量

私有的变量

    平时能够直接在类的外面调用一般叫做公有的方法,私有方法不能直接类的外面进行调用,只能在类的定义里面使用

在python中使用__作为方法或者变量的前缀. 那么这个方法或者变量就是一个私有的.

class Person:

    def __init__(self,name):

       self.__name =  name

    def shiyongsiyou(self):

       return self.__name

由于私有的变量在类的外面是不能直接进行访问的,如果想要在外面访问私有的变量可以通过  访问一个正常的方法,通过正常的方法返回私有的变量 如上

缺点是只能查看,不能进行修改

私有方法

    私有方法只能在类中进行调用,类的外面不能访问,如果在外面直接调用会直接报错

class Person:

    def __init__(self,name):

       self.__name =  name

    def __yue(self):

       print(‘这是私有方法’)

    def zhengchang(self):

       self.__yue()

原文地址:https://www.cnblogs.com/vivi0403/p/9922750.html