zoukankan      html  css  js  c++  java
  • 面向对象的成员

    一.变量

    1.实例变量

      实例里的变量,由对象去访问的变量

    2.类的变量

      类里的变量,这个变量属于类,但是对象也可以访问.最好用类名访问

    class Person:
        country = "大清"    # 类的变量
    
        def __init__(self, name, gender):
            self.name = name       # 实例变量 对象里的变量
            self.gender = gender
    
    
    Person.country = "大名"
    # Person.gender = "男"
    p = Person("小明", "未知")
    p2 = Person("小小", "两性")
    
    # p.country = "新中国"
    print(p.country)
    print(p2.country)  # 类的变量可以给对象使用
    print(Person.country)   # 类的变量最好使用类名来访问
    # print(dir(Person)) 

    二.方法

    1.实例方法

      实例方法就是属于对象的方法,需要实例化后访问.

    2.类方法(@classmethod)

      类方法属于类的,在声明的时候需要给出一个能接收类名的cls,和self效果一样

    3.静态方法(@staticmethod)

      静态方法也是属于类的,静态方法就好比我们在类里定义了一个函数. 使用类名去访问

    class Computer:
    
        def play(self):  # 这就是实例方法
            print("电脑可以扫雷")
    
        @classmethod   # 装饰器 ,此时这个方法是一个类的方法
        def chat(cls):  # 此时接收到的cls是类名
            print("电脑可以聊天")
    
        @staticmethod   # 此时这是一个 静态方法
        def listen():
            print("电脑可以听听音乐")
    
    c = Computer()
    c.chat()     # 在调用类方法的时候 默认的把类名传递给类方法
    # 类的东西可以看成是全局的东西
    Computer.chat()  # 最好是谁的东西谁去用
    
    Computer.listen()   # 推荐使用类名访问  

    三.属性

      在方法上添加一个@property .可以把一个方法编程一个属性.但是这个属性不能更改 也就是不能赋值

      当我们需要一个经过计算才能得到结果的时候用,必须用return返回结果

    class Person:
    
        def __init__(self,name,gender ,birth):
            self.name = name
            self.gender = gender
            # self.age = 2018 - birth
            self.birth = birth
        # 需要算出来的属性  用property
        @property  # 把一个方法更改成一个属性,每次拿属性的时候都会执行这个方法
                   # 方法的返回值就是属性
        def age(self):
            return 2018 - self.birth
    
    p = Person("小明","未知",2000)
    
    print(p.age)  # 看着像一个变量一样使用 其实是调用了一个方法 不能赋值

    四.私有

      所有以双下划线开头不以双下划线结尾的方法,变量都是私有内容.在类的外边无法访问,除非在类中曝光.

    class Person:
    
        __qie = "潘潘"   # 类变量的私有
    
        def __init__(self,name,mimi):
            self.name = name
            self.__mimi = mimi   # 实例变量的私有
    
        def gaosu(self):
            print(f"{self.__mimi}")   # 私有内容只能在class内访问到
            print(Person.__qie)
    
        def __yue(self):     # 实例方法的私有
            print("走 一起看电影")
    
        @classmethod
        def __chi(cls):         # 类的方法的私有
            print("一起吃饭")
    
        @staticmethod
        def __he():            # 静态方法的私有
            print("一起喝")
    
    
    p = Person("五二","和嫂子")
    
    p.gaosu()
    
    p.yue()   # 报错   因为在外面访问不到
  • 相关阅读:
    问题解决-Plugin with id 'com.github.dcendents.android-maven' not found
    hadoop 04 一 HA高可用配置
    hadoop 03 一 Hadoop机架感知配置
    Windows平台安装配置Hadoop
    hadoop 02一 hadoop配置
    hadoop 01一 hadoop安装配置
    Centos7下载和安装教程
    mysql 命令行导出数据
    RabbitMQ 集群部署(linux-centos6.5)
    Spring 集成RabbitMq
  • 原文地址:https://www.cnblogs.com/q767498226/p/10140308.html
Copyright © 2011-2022 走看看