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


    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()

  • 相关阅读:
    ubuntu升级显卡驱动
    __slots__属性,声明实力属性名字列表
    isinstance 与 type 的区别
    conda使用技巧
    卷积神经网络参数
    apache nginx php不显示版本号
    30个实用的Linux find命令示例
    账号的管理的那点事
    Linux 命令整理 —— 基本操作
    Linux 命令整理 —— 用户管理
  • 原文地址:https://www.cnblogs.com/vivi0403/p/9922750.html
Copyright © 2020-2023  润新知