1. 什么是动态语言(wikipedia)

在运行时,可以进行一些操作(静态语言在编译时执行),比如扩展对象的定义、修改类型等

2. 定义类和创建对象

C++ python
  1. class A{
  2. public:
  3. A(){
  4. cout << "A 构造函数";
  5. a = "a";
  6. common = "common_a";
  7. }
  8. //private:
  9. string a;
  10. string common;
  11. };
  12. A a = A();
  13. A* a_pointer = new A();
  1. class A():
  2. def __init__(self):
  3. print("init 函数")
  4. self.a = 'a'
  5. self.common = 'common_a'
  6. a = A()
  7.  
  8. # 在执行时动态地修改对象,创建属性
  9. class ADynamic:
  10. def __init__(self):
  11. print("ADynamicinit 函数")
  12.  
  13. adynamic = ADynamic()
  14. adynamic.a = 'a'
  15. adynamic.common = 'common_a'

3. 属性的访问限制

  C++ python
公有

public:

  int a;

self.a=1
保护

protected:

  int a;

self._a=1

//可通过obj._a访问

私有

private:

  int a;

self.__a=1

//可通过obj._类名__a访问

4. 多继承

C++ python
  1. class AParentParent{
  2. public:
  3. AParentParent(){
  4. cout << "AParentParent 构造函数" << endl;
  5. this->common = "common_aparentparent";
  6. }
  7. string common;
  8. };
  9.  
  10. class AParent1 : AParentParent{
  11. public:
  12. AParent1(){
  13. cout << "AParent1 构造函数" << endl;
  14. this->common = "common_aparent1";
  15. }
  16. string common;
  17. };
  18. class AParent2 : AParentParent{
  19. public:
  20. AParent2(){
  21. cout << "AParent2 构造函数"<<endl;
  22. this->common = "common_aparent2";
  23. }
  24. string common;
  25. };
  26.  
  27. class A : AParent1, AParent2{
  28. public:
  29. A(){
  30. cout << "A 构造函数" << endl;
  31. a = "a";
  32. common = "common_a";
  33. }
  34. //private:
  35. string a;
  36. string common;
  37. };
  38. A a = A();
  39. // 输出内容
  40. /*
  41. AParentParent构造函数
  42. AParent1构造函数
  43. AParentParent构造函数
  44. AParent2构造函数
  45. A构造函数
  46. */
  1. class AParentParent:
  2. def __init__(self):
  3. print("AParentParent init 函数")
  4. self.common = "common_aparentparent"
  5.  
  6. class AParent1(AParentParent):
  7. def __init__(self):
  8. super(AParent1, self).__init__()
  9. print("AParent1 init 函数")
  10. self.common = "common_aparent1"
  11.  
  12. class AParent2(AParentParent):
  13. def __init__(self):
  14. super(AParent2, self).__init__()
  15. print("AParent2 init 函数")
  16. self.common = "common_aparent2"
  17.  
  18. class A(AParent1, AParent2):
  19. def __init__(self):
  20. super(A, self).__init__()
  21. print("A init 函数")
  22. self.a = 'a'
  23. self.common = 'common_a'
  24.  
  25. ## 输出
  26. # AParentParent init 函数
  27. # AParent2 init 函数
  28. # AParent1 init 函数
  29. # A init 函数
  30. ##

//待续...

//static,类方法,__slots__,多态...

python vs C++ 类的更多相关文章

  1. Python中的类、对象、继承

    类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...

  2. python pickle 序列化类

    python pickle 序列化类 # coding:utf-8 try: import cPickle as pickle except ImportError: import pickle cl ...

  3. python基础——枚举类

    python基础——枚举类 当我们需要定义常量时,一个办法是用大写变量通过整数来定义,例如月份: JAN = 1 FEB = 2 MAR = 3 ... NOV = 11 DEC = 12 好处是简单 ...

  4. python基础——定制类

    python基础——定制类 看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方 ...

  5. python中的类和实例

    今天花了两个多小时后搜索相关博客看了看python中有关类和实例的介绍,差不多大概明白了. python中的类和c++中的类是一样的,不同之处就是c++的类,如果含有成员变量,并且成员变量发生变化后, ...

  6. Python基础-类的探讨(class)

    Python基础-类的探讨(class) 我们下面的探讨基于Python3,我实际测试使用的是Python3.2,Python3与Python2在类函数的类型上做了改变 1,类定义语法  Python ...

  7. python中的类属性和实例属性

    属性就是属于一个对象的数据或者函数,我们可以通过句点(.)来访问属性,同时 Python 还支持在运作中添加和修改属性. 我们先来看看类里面的普通字段: class Test(object): nam ...

  8. Python之Metaclass详解,Python之元类

    本人Java程序员一枚,这几天闲来无事就自学了下Python,学到Metaclass感觉有点迷惑,就在网上查相关资料,在栈溢出(stackoverflow)网站上看到一个关于metaclass的回答, ...

  9. Python进阶_类与实例

    上一节将到面对对象必须先抽象模型,之后直接利用模型.这一节我们来具体理解一下这句话的意思. 面对对象最重要的概念就是类(class)和实例(instance),必须牢记类是抽象的模板,比如studen ...

  10. python之定义类创建实例

    https://www.cnblogs.com/evablogs/p/6688938.html 类的定义 在Python中,类通过class关键字定义,类名以大写字母开头 1 2 >>&g ...

随机推荐

  1. newCachedThreadPool 的使用

    newCachedThreadPool的线程池特点: (1)它是一个可以无限扩大的线程池:它比较适合处理执行时间比较小的任务:corePoolSize为0,maximumPoolSize为无限大,意味 ...

  2. docker容器的安装与使用

    docker 容器概念 1.什么是容器 容器就是在隔离环境运行的一个进程,如果进程停止,容器就会销毁.隔离的环境拥有自己的系统文件,IP地址,主机名等. kvm虚拟机,linux,系统文件 程序: 代 ...

  3. Centos 6.5下mysql 8.0.11的rpm包的安装方式

    1.系统版本及mysql下载地址 操作系统:Centos 6.5(Centos 7.4下载对应的mysql版本安装同理) mysql数据库版本:mysql8.0.11 mysql官方网站:http:/ ...

  4. 机器学习---感知机(Machine Learning Perceptron)

    感知机(perceptron)是一种线性分类模型,通常用于二分类问题.感知机由Rosenblatt在1957年提出,是神经网络和支持向量机的基础.通过修改损失函数,它可以发展成支持向量机:通过多层堆叠 ...

  5. freeCodeCamp中一些有趣的方法

    1. 过滤对象(找到数组中(collection)与之(source)匹配对象,过滤掉数组中(collection)不匹配对象) function where(collection, source) ...

  6. LOJ#2085 循环之美

    解:首先看这个纯循环到底是什么玩意..... 经过一番打表,发现纯循环小数就是分母与进制互质的既约分数. #include <bits/stdc++.h> std::bitset<& ...

  7. 浅谈JS中逗号运算符的用法

    阅读本文的前提是,你能区分什么是表达式,什么是语句.还有明确运算符和运算数都是些啥东西.所谓的表达式就是一个JavaScript的"短语",JavaScript的解释器可以计算它, ...

  8. linux同步测试机文件到开发机

    rsync -vrtL --progress /bckup/* root@192.168.1.101:/bckup/ 参考博客: https://www.cnblogs.com/liuquan/p/5 ...

  9. 011 Socket定义客户端

    引入命名空间: using System.Net; using System.Net.Sockets; using System.Threading;

  10. pthread mutex 进程间互斥锁实例

    共享标志 定义 名称 描述 0 PTHREAD_PROCESS_PRIVATE 进程内互斥锁 仅可当前进程内共享 1 PTHREAD_PROCESS_SHARED 进程间互斥锁 多个进程间共享 第一个 ...