zoukankan      html  css  js  c++  java
  • day16 类的成员


    成员 类中写的内容就是成员
    变量
    1. 实例变量(成员变量, 字段). 对象.xxx = xxx 实例变量 -> 字段 -> 属性. 给对象用的

    2. 类变量. 直接写在类中的变量就是类变量. 类变量一般用类名来访问. 对象中共性的属性提取出来.即所有该类的对象共享的的变量
    class Person:
        country = "中国"      # 类变量
        def __init__(self,name, age):
            self.name = name
            self.age = age
    
    # Person.country = "大清" 
    # print(Person.country) # 直接使用类名进行访问
    p1 = Person("alex", 185)
    p1.country = "大清" # 添加了一个实例变量
    print(p1.name)
    print(p1.country)
    
    p2 = Person("wusir", 145)
    print(p2.name)
    print(p2.country)
    
    # 类变量的修改只能通过类名来完成
    View Code
            
         方法
    1. 实例方法(成员方法). 对象直接访问的方法 对象.方法()
    class Computer:
    # 实例⽅法(成员⽅法)
        def play(self):
        print("我的电脑可以玩⼉")
    c = Computer()
    c.play() # 对象直接去调⽤实例⽅法
    View Code
                2. 类方法. 需要在参数列表的第一位置预留位置, 参数起名cls,被调用时也不需要传递实例对象  添加@classmethod   类名.方法()
    class Computer:
        def play(self):
            print("我的电脑可以玩⼉")
        @staticmethod
        def fare():
            print("我的电脑⾮常⽜B, 可以煎鸡蛋")
        @classmethod
        def cal(cls, a, b):
            print(cls)
            return a+b
    print(Computer.cal(1, 2)) # 此时会⾃动的把类名传递给类⽅法的第⼀个参数
    View Code

    3. 静态方法. 不需要给方法传递self, 即出现一个方法不需要是使用成员变量的时候,选择静态方法 添加@staticmethod 类名.方法()
    @staticmethod
        def fare():
        print("我的电脑⾮常⽜B, 可以煎鸡蛋")
    Computer.fare() # 类名可以直接访问的
    c.fare() # 对象也可以访问. 但最好不要这么⼲. 以便于区分静态⽅法和实例⽅法
    View Code
            属性  @property
    把方法转化成属性.
    对象.属性
        注意事项: 1.方法参数只能有一个self
             2.调用时不需要括号, 当属性变量使用
             3. 需要有返回值
             4. 不能赋值
    class User:
        def __init__(self, name, birthday, qq, email):
            self.name = name
            self.birthday = birthday
            self.qq = qq
            self.email = email
    
        # 方法
        @property # 可以把一个方法变成一个属性
        def age(self):
            return 2018 - self.birthday
        '''
            @property
            1. 函数只能有一个self参数. 
            2. 需要有返回值
            3. 不能赋值
            4. 调⽤的时候, 我们不需要写括号. 直接当成属性变量来⽤就可以了
            
        '''
    u = User("王明", 1994, 1024663304, "wangming@126.com")
    print(u.age)
    u.qq = 10010
    u.age = 18
    View Code

      私有 (在python中,一般不提倡设置和使用私有信息)
    __作为前缀
    在自己类中可以随意访问. 但是出了类任何人都不可以访问这个私有内容
         但是通过公共方法可以访问
    访问私有变量
    访问私有方法
    访问私有方法
    class Person:
        def __init__(self):
            pass
        def __yue(self):
            print("我要约会")
        def job(self):
            print("我要⼯作")
            self.__yue() # 在⾃⼰类中访问⾃⼰的其他⽅法. 哪怕是私有的. 也是⾃⼰在⽤
    p = Person()
    p.job()

  • 相关阅读:
    拥有自己的代码生成器—Newlife.XCode模板编写教程
    基于Newlife.XCode的权限系统(含数据集权限)【设计篇】
    拥有自己的代码生成器—NewLife.XCode代码生成器分析
    利用javascript来转换GB2312到UNICONDE &#形式
    和荣笔记 从 Unicode 到 GB2312 转换表制作程式
    如何做SVN迁移
    和荣笔记 GB2312 字符集和编码说明
    asp对象化之:基于adodb.stream的文件操作类
    Unicode 汉字内码表
    微软建议的ASP性能优化28条守则 之三
  • 原文地址:https://www.cnblogs.com/Knight-huang/p/9923744.html
Copyright © 2011-2022 走看看