012: class and class objects > 初步了解

终于开始学习面向对象的基础知识了,面向对象三大特点:

1. 继承

2. 多态

3. 封装

程序的世界只有两种元素:数据,算法。 算法一直试图改变数据,得到一种新的数据。

类的功能也就是把数据和算法放到一起,这中写法改变了代码的格局,更适合人的思维,因此一经推出便得到了长足的发展。

Pyhong的类个人感觉是做了一个融合,把javascript当中的对象思想和其他语言的类的思想融合在了一起,下面的例子将简单的介绍一些基本概念。

1. 对象相对于类是可以变化的,这个是javascript里面的对象所拥有的属性。

class Human(object):
    pass

def say_hello():
    print(‘hello‘)

Tom = Human()
Tom.name = ‘Tom‘
Tom.age = 21
Tom.say_hello = say_hello

print(Tom.age)
Tom.say_hello

2. 对象的初始化

大部分面向对象的编程语言都会有一个构造函数的特殊方法,用于创建对象的时候初始化对象。Python却不太一样,Python有两个这样的函数,一个是初始化函数,一个是构造函数,正常情况下,构造函数几乎不会用到。

所以重点学习初始化函数,初始化函数其实也很简单,名字比较特别,__init__

import math

class Point:
    def __init__(self, x = 0, y = 0):
        self.move(x, y)

    def move(self, x, y):
        self.x = x
        self.y = y

    def reset(self):
        self.x = 0
        self.y = 0

    def calculate_distance(self):
        return math.sqrt(self.x ** 2 + self.y ** 2)    

point = Point(3, 4)                

print(point.calculate_distance())

3. 对象的私有性

在Python中是不支持私有变量的,但是有一个方式,可以让使客户端不能直接调用该变量:对某个属性加一个双下划线的前缀,这样使得该属性会自动添加上一个_ClassName的前缀。

class SecretString:
    def __init__(self, plain_string):
        self.__plain_string = plain_string

    def get_plain_string(self):
        return self.__plain_string

s = SecretString(‘hello world‘)            

print(‘s.get_plain_string =‘, s.get_plain_string())

print(‘s._SecretString.__plain_string =‘, s._SecretString__plain_string)

print(s.__plain_string)
时间: 2024-10-27 11:20:02

012: class and class objects > 初步了解的相关文章

Cocos2d-x 3.1 Director ActionManger Scheduler初步分析

Director游戏主循环显示Node DisplayLinkDirector继承Director override了以下方法 virtual void mainLoop() override; virtual void setAnimationInterval(double value) override; virtual void startAnimation() override; virtual void stopAnimation() override; mainLoop()是游戏主循

从LINQ开始之LINQ to Objects(下)

前言 上一篇<从LINQ开始之LINQ to Objects(上)>主要介绍了LINQ的体系结构.基本语法以及LINQ to Objects中标准查询操作符的使用方法.本篇则主要讨论LINQ to Objects中的扩展方法以及延迟加载等方面的内容. 扩展方法 扩展方法简介 扩展方法能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或其他方式修改原始类型.扩展方法是静态方法,它是类的一部分,但实际没有放在类的源代码当中.下面,我们来看一个简单示例,为上一篇中定义的

A.Kaw矩阵代数初步学习笔记 5. System of Equations

“矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔记下载(Academia.edu) 第5章课程讲义下载(PDF) Summary Consistent and inconsistent system A system of equations $$[A][X]=[B]$$ where $[A]$ is called the coefficient

LinQ To Objects 高级查询方法

什么是LinQ To Objects? 用一个例子解释,首先定义一个数组,查询数组中的最大值: int[] arr = { 123, 2, 3, 45, 654, 2324, 897, 56, 6554, 4, 3, 6, 8, 434 }; 旧的方法: int max=0 ; foreach(int a in arr) { if(a>=max) max=a; } Console.Write("最大值:"+ max); LinQ To Objects方法: Console.Wri

Git 系列(二):初步了解 Git

在这个系列的介绍篇中,我们学习到了谁应该使用 Git,以及 Git 是用来做什么的.今天,我们将学习如何克隆公共 Git 仓库,以及如何提取出独立的文件而不用克隆整个仓库. 由于 Git 如此流行,因而如果你能够至少熟悉一些基础的 Git 知识也能为你的生活带来很多便捷.如果你可以掌握 Git 基础(你可以的,我发誓!),那么你将能够下载任何你需要的东西,甚至还可能做一些贡献作为回馈.毕竟,那就是开源的精髓所在:你拥有获取你使用的软件代码的权利,拥有和他人分享的自由,以及只要你愿意就可以修改它的

Linq之Linq to Objects

目录 写在前面 系列文章 linq to objects 总结 写在前面 上篇文章介绍了linq的延迟加载特性的相关内容,从这篇文章开始将陆续介绍linq to Objects,linq to xml,linq to sql等内容. 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda进阶 Linq之隐式类型.自动属性.初始化器.匿名类 Linq之扩展方法 Linq之Expression初见 Linq之Expression进阶 Linq之Expression高级篇(常用表达式类

Scala入门到精通——第一节 Scala语言初步

本节主要内容 Scala简介 为什么要学习Scala Scala语言初步 1. Scala简介 Scala(Scala Language的简称)语言是一种能够运行于JVM和.Net平台之上的通用编程语言,既可用于大规模应用程序开发,也可用于脚本编程,它由由Martin Odersk于2001开发,2004年开始程序运行在JVM与.Net平台之上,由于其简洁.优雅.类型安全的编程模式而受到关注. Scala的创建者--Martin Odersk 在Scala的创建之初,并没有怎么引起重视,随着Ap

Hibernate技术(一)--Hibernate初步

Hibernate初步 ORM:在编写程序时,处理数据采用面向对象的方式,而保存数据却以关系型数据库的方式,因此需要一种能在两者之间进行转换的机制.这种机制称为ORM,ORM保存了对象和关系型数据库表的映射信息. Hibernate框架搭建 Hibernate3JAR包引入: antlr-2.7.6.jar 语言转换工具,实现HQL到SQL的转换 commons-collections-3.1.jar dom4j-1.6.1.jar 读写XML文件 hibernate3.jar 核心类库 hib

Rust初步(五):Rust与C#性能比较

我学习Rust的目的并不是说期望用它来取代掉现有的开发平台或语言.相反,我认为当前绝大部分研发团队,都不可能只用一个平台或者一个语言. 当组织增长,他们越来越依赖大量的编程语言.不同的编程语言有不同的能力和弱点,而一个多语言栈让你在某个特定的编程语言的优点起作用的时候能使用它,当它有缺陷时使用其他编程语言. Rust 主要擅长的领域是:数值计算和线程. 我下面用一个实例来比较一下Rust和C#的性能方面表现.这个实例很简单,我们准备开启10个线程,然后在每个线程里面运行一个数值累加的工作任务(5