zoukankan      html  css  js  c++  java
  • 面向对象,请珍惜我们的地球。珍惜我们的环境。在这个宇宙中,很可能真的只有我们——人类在孤独的生存和奋斗。

    首先,计算机程序是为了解决问题而存在的,那么怎么才能更好的解决问题呢?——模仿自然。简单的模仿就是面向过程。把某个事情的过程写出来。这种思想的缺点是扩展性很差。所以为了解决这个问题,发展出了面向对象的编程思想。所谓的面向对象,就是对自然界中事物的模仿,在这个模仿的基础上去扩展。所以自然而然就有了面向对象的一套编程理论。把自然界的事物高度抽象出来,作为这一类的事物都具有的特点和能力,那么,这个抽象就是所谓的类。而根据类做出的具体的事物,就是所谓的对象了。先说类,类就是对象的图纸。所以,对象应该具有或者说需要具有什么功能,什么特点,那么就在类中写出这些个特点和功能,但是这些功能和特点都应该属于具体的某一个对象,所以这些功能和特点就应该用具体的对象来访问,就是所谓的self。而为了更加合理的模仿大自然,或者为了更加合理的节省内存,发挥计算机的效率,给类这个对象也规定了一些特性,以便与更好的为对象服务。让所有的对象都应该拥有的特性,并且每一个对象这个特行的值都应该是一样的情况下,就不用每一个对象都去写了,只要在类中写明,就可以了,这样每一个对象都天然有这个同样值的同一个属性。这就是类变量。类变量也叫做静态变量,类变量最好用类去访问。对象也可以访问,但不符合规范,不能这么做。总结,实例变量,给对象用的,用对象访问,类变量(静态变量),这个类的所有对象共享的变量,最好用类名来访问,符合规范。那么,有了类变量(静态变量),就一定有静态方法。声明静态方法的语句上面要加一条特定声明语句:@staticmethod,以便与普通的对象方法做区别。@staticmethod是语法,必须这么写。与静态方法相对的就是实例方法(对象方法)。对象方法就是普通的写在类中的函数。成员方法(对象方法)必须要传递至少一个参数(self),静态方法不需要传递参数。也就是说静态方法不需要传递成员变量。或者说不需要传递成员变量的方法就可以用静态方法。静态方法和类变量(静态变量)一样都要用类名来访问和调用。另一个和静态方法差不多的就是类方法。类方法在参数列表中第一个参数就是cls,就是调用这个方法的类的名字,类方法在之前必须加一句语法@classmethod。面试题: 类⽅方法/静态⽅方法和实例例⽅方法有什什么区别?除了这些,还有一个麻烦——类的成员——属性。这是一种变种。本身应该是属性,是静态的,但是静态又没办法取值,因为它是变化的,例如人这个类的年龄属性。年龄每年都会变。所有不能写死,但是每次取值都要计算很麻烦,所以在类中用一种特殊的写法来实现。前面加上一句@porperty。类的成员——属性的限制:1,方法(代码)参数中只能有一个参数self。2,方法上要写@porperty。3,调用的时候不需要写括号,相当于不需要运行,相当于作为属性来直接取值。直接当成属性变量来用就i可以了。4,这种特殊形式只能取值,不能设置值。总之,很麻烦。再来,就是私有了。私有只要在变量或属性前加上双下划线就可以了。私有的变量或属性不能直接访问,但是可以通过公共的方法来获取内容。外界只能看不嫩改。私有可以是类变量或静态变量,也可以是实例变量。方法也可以私有。而且私有最大的特征就是子类是无法继承的。以上,很罗嗦。但最常用到的还是最普通的对象方法和对象属性,还有静态变量。以及私有。类属性@porperty感觉也应该常用,最起码身份类中的年龄就必须用到。我想,所谓面向对象也是一种拙略的模仿吧。只不过当前情况下,这也算是最好的办法了。大自然是千变万化的。模仿起来很难很难。生物,大自然是多少百万年进化而来的。就像科幻小说里说的,一个外星人学习了地球的全部知识,把这些知识连接成一个无限长的数,再除以一个特定的数,得到一个结果,利用这个结果做一根有限长度的金属棒,这根金属棒不随着时间或任何事物而变化。外星人回到他的星球,只要用棒子的长度乘以那个特定的数就可以得到那个无限长的数,也就得到了地球所有的额知识。哈哈哈哈。脑洞大开啊。但毕竟没有外星人。就如近些年的理论发现,生命的出现其实绝对是偶然中的偶然。就算宇宙中有无限数量的星系,出现生命的几率也是小的可怜,可以忽略不记。所以,珍惜我们的地球吧。珍惜我们的环境吧。在这个宇宙中,很可能真的只有我们——人类在孤独的生存和奋斗。

  • 相关阅读:
    【LeetCode 104_二叉树_遍历】Maximum Depth of Binary Tree
    【LeetCode 110_二叉树_遍历】Balanced Binary Tree
    【LeetCode 111_二叉树_遍历】Minimum Depth of Binary Tree
    【剑指Offer】36两个链表的第一个公共结点
    【剑指Offer】34第一个只出现一次的字符
    【剑指Offer】33丑数
    【剑指Offer】32把数组排成最小的数
    xgboost的原理没你想像的那么难(转载)
    【剑指Offer】31整数中1出现的次数(从1到n整数中1出现的次数)
    【剑指Offer】28连续子数组的最大和
  • 原文地址:https://www.cnblogs.com/wjywinner/p/10219529.html
Copyright © 2011-2022 走看看