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

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

2. 定义类和创建对象

C++ python
 class A{
public:
A(){
cout << "A 构造函数";
a = "a";
common = "common_a";
}
//private:
string a;
string common;
};
A a = A();
A* a_pointer = new A();
 class A():
def __init__(self):
print("init 函数")
self.a = 'a'
self.common = 'common_a'
a = A() # 在执行时动态地修改对象,创建属性
class ADynamic:
def __init__(self):
print("ADynamicinit 函数") adynamic = ADynamic()
adynamic.a = 'a'
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
class AParentParent{
public:
AParentParent(){
cout << "AParentParent 构造函数" << endl;
this->common = "common_aparentparent";
}
string common;
}; class AParent1 : AParentParent{
public:
AParent1(){
cout << "AParent1 构造函数" << endl;
this->common = "common_aparent1";
}
string common;
};
class AParent2 : AParentParent{
public:
AParent2(){
cout << "AParent2 构造函数"<<endl;
this->common = "common_aparent2";
}
string common;
}; class A : AParent1, AParent2{
public:
A(){
cout << "A 构造函数" << endl;
a = "a";
common = "common_a";
}
//private:
string a;
string common;
};
A a = A();
// 输出内容
/*
AParentParent构造函数
AParent1构造函数
AParentParent构造函数
AParent2构造函数
A构造函数
*/
 class AParentParent:
def __init__(self):
print("AParentParent init 函数")
self.common = "common_aparentparent" class AParent1(AParentParent):
def __init__(self):
super(AParent1, self).__init__()
print("AParent1 init 函数")
self.common = "common_aparent1" class AParent2(AParentParent):
def __init__(self):
super(AParent2, self).__init__()
print("AParent2 init 函数")
self.common = "common_aparent2" class A(AParent1, AParent2):
def __init__(self):
super(A, self).__init__()
print("A init 函数")
self.a = 'a'
self.common = 'common_a' ## 输出
# AParentParent init 函数
# AParent2 init 函数
# AParent1 init 函数
# A init 函数
##

//待续...

//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. Flutter自定义路由PageRouteBuilder

    自定义路由翻转,渐变,左右滑动 方法如下: 首先继承 PageRouteBuilder ,重写方法 将MaterialPageRoute改为showSearch import 'package:flu ...

  2. java核心卷笔记--P48字符串3.6.5

    一定不要使用 == 运算符检测两个字符串是否相等 ! 这个运算符只能够确定两个字串是否放置在同一个位置上 . 当然 , 如果字符串放置在同一个位置上 , 它们必然相等. 但是 ,完全有可能将内容相同的 ...

  3. Manjaro折腾简单记录

    0.Manjaro启动U盘的制作 推荐使用4-16G容量的U盘,避免兼容性问题(U盘太大可能会无法启动). 用rufus就可以,注意选用DD模式才能成功制作. 如果在linux环境里,先用sudo f ...

  4. C# 中使用面向切面编程(AOP)中实践代码整洁

    1. 前言 最近在看<架构整洁之道>一书,书中反复提到了面向对象编程的 SOLID 原则(在作者的前一本书<代码整洁之道>也是被大力阐释),而面向切面编程(Aop)作为面向对象 ...

  5. win10 nginx

    下载后运行报错 nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in ...

  6. nginx 配置详解(转)

    nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...

  7. C#使用WindowsMediaPlayer实现视频播放

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  8. MySql实现远程访问配置

    1.新建用户远程连接mysql数据库grant all on *.* to admin@'%' identified by '123456' with grant option; flush priv ...

  9. 金蝶K3 wise 插件二次开发与配置

    金蝶K3 wise 插件二次开发与配置 开发环境:K/3 Wise 13.0.K/3 Bos开发平台.Visual Basic 6.0 目录 一.二次开发插件编程二.代码演示三.配置插件四.测试插件五 ...

  10. uboot中的中断macro宏

    目录 uboot中的中断macro宏 引入 内存分配 流程概览 普通中断 保存现场 中断函数打印具体寄存器 恢复现场 软中断 空间获取 保存现场 附录速记 疑惑待解 title: uboot中的中断m ...