首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python中类的声明,使用,属性,实例

类中的类属性与实例属性: 实例如下: #eg:定义一个猫类 class cat:   """猫类""" name = "小花" #类属性 可以通过类来调用 # __init__为实例方法...def __init__(self):     #self为实例参数 self.name_1 = "小强" #实例属性 定义时必须要用实例参数.出来 那么接下来我们分别调用它的类属性...,实例属性 #cat_1为实例名称 cat_1 = cat() print(cat.name) #调用它的类属性 print(cat_1.name) #通过实例参数调用类属性...son = son() #输出结果: 我是父亲 可以看到子类是没有实例函数__init__()的, 但是创建实例的时候依然有输出结果,并且是调用了父类father的实例函数, 但是并没有调用父类mather...类的实例函数,可见当子类继承了父类之后, 子类也会继承父类的函数,包括实例函数,但是只会继承第一个父类的函数 方法的重写: 当子类继承了父类的函数之后,函数是子类需要的,但是函数体又不是子类需要的。

5.6K21

Heskell与函数式编程

导语 :这个系列打算分为三部分,由浅入深地介绍所谓的函数式编程 1)Haskell入门 2)Monad介绍 3)函数式编程的思想 Haskell简介 Haskell诞生于1990年,是一门纯函数式编程语言...可以看到一些基础的类型 True ,Char,[Char] 然后对于  :t 0 的理解   ( 0 :: Num a => a ),表明 0是一种Num类族(typeclass)的a,Num类族这里可以先简单理解为...这里Ord也是一个typeclass,一个他的实例的类型能够使用>来比较大小,然后后面跟着三个a,这里简单做下括号就能够区分了。...( a -> a ) -> a ,最后一个参数输出,前面两个a是入参,用文字来描述就是: 输入两个Ord类族的参数,输出一个Ord类族的输出。...用文字来表述: 入参是(Ord , Ord , (Eq , Fractional) )类族的三个参数,出参是一个Boolean值,其中z具有Eq和Fractional两个特性,Eq的作用是能够做==比较

85370
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为何 Go 的声明语法有点怪?(语法比较)

    Haskell 的语法是与自身为纯函数式的编程语言分不开的,Haskell 不使用括号这种具有边界性质的符号来界定参数,而是使用 -> 开放形式来声明,返回值与入参一样,都是用-> 串起来的,使得声明看起来非常的一致...Haskell 是强类型语言,但是带了一个很强大的类型推导系统,我们在声明变量时不需要指定变量的类型,编译器会根据初始化数据或函数返回值等来判断参数类型,另一方面,Haskell是函数式编程语言,我们声明的类型都是...OK, 我们现在来声明一个函数: inc :: Int -> Int inc x = x + 1 注:在 Haskell 里,函数是一等公民,这里我将函数的声明类型也写出来只是为了清晰起见,其实我们可以简单只写...Haskell 为什么要这样设计? 这和 Haskell 语言的函数式本质是分不开的。...回过头来我们再看一下 Haskell 的函数声明语法a -> b -> c,其实这里面没有什么入参、返回值的区别,函数从左到右接收参数,返回值就是最后参数后面的部分,也就是说我们提供了一个参数a,返回就是

    1.7K40

    newtype_Haskell笔记8

    类定义的行为,具体见Functor与Applicative_Haskell笔记7 二.newtype ZipList就是因这个场景而产生的,本质上是对List的包装,定义如下: newtype ZipList...不像type创建的别名类型可以与原类型等价换用,newtype创建的新类型与原类型是完全不同的东西,唯一的联系是新类型内部实际操作的是原类型(通过持有原类型实例引用),通过这种方式在外层实现对原类型的扩展...要求newtype声明的类型只能有一个值构造器,并且这个值构造器只能有一个参数(field)。...(typeclass)实现时 四.newtype与惰性计算 Haskell中大多数计算都是惰性的(少数指的是foldl'、Data.ByteString之类的严格版本),也就是说,计算只在不得不算的时候才会发生...关键字定义的数据类型可以有多个值构造器,即便只声明了一个,它也要找过才知道。

    62130

    从 Java 和 JavaScript 来学习 Haskell 和 Groovy(类型系统)

    2、”” 比较特别,它不是 Object 的实例,它也不是 String 的实例。...在 Java、C++这样的静态语言中,函数只能被声明和调用,只能依附在类的定义上面,无法像对象一样被传来传去,为此还孕育了一堆设计模式,看起来高大上了,其实是无奈为之。...比如,函数的定义方式给了两种,一种是直接声明,一种是表达式赋值,但是这两者被解释器处理起来的机制并不相同;再比如,函数的所谓 “构造器” 是和函数本身融合在一起的,不像 C++或者 Java 里面,类定义是一方面...type instance(类型实例):type 的实例。 typeclass(类型类):和 Java 中的接口的概念有些类似,每一种 typeclass 都定义了某一行为,但是它并没有实现。...Haskell 的情况就更特别了,因为 Haskell 里面没有类的概念,但是有一些特性使用起来效果是差不多的。

    55150

    从 Java 和 JavaScript 来学习 Haskell 和 Groovy(汇总)

    下面这张 “神图” 来自于这里,可以说是对于范型和语言归类的概览,从左往右从更强的声明式向着更弱的声明式发展;依据状态分为 Unnamed state(串行或并发,包含逻辑式和函数式这几种分类)、Nondet...有了这棵大树,范型之间的关系变得很容易识别,比如这样的粗线条: 最初的范型仅仅是简单的 “record” 而已,纯粹的声明和静态的描述;有一天加上了过程,于是有了一阶函数式编程;之后有一天再加上了状态...Groovy 的脚本友好特性,使得它很容易实现简洁的 DSL 用于配置描述。 Haskell 就是专注于函数式编程的典型。之前已经介绍过函数式编程的诸多特性,而且它具备良好的模块化特性。...《从 Java 和 JavaScript 来学习 Haskell 和 Groovy(元编程)》,介绍了这四种语言实现元编程方面的能力和特性,包括 Java 的自省,编译期织入和运行期代理,Haskell...很多特性都没有涉及,比如 Haskell 的很多高级特性,是因为我觉得我没法写好,就先不写了。

    51910

    热爱函数式的你,句句纯正的 Haskell【类型篇】

    我们从 wiki 上可以找到以下要点: Haskell 是一种标准化的,通用的纯函数式编程语言,有惰性求值和强静态类型; 在Haskell中,“函数是第一类对象”。...调试 目前 Haskell 的主要编译器是 GHC,下载地址,你可以创建 .hs 文件,用 Notepad++ 打开。 GHCi 是 GHC 的一部分,可以解析、调试 Haskell 程序。...每一个函数都符合这样一个定义; add::(Int,Int)->Int // 声明 add 函数,输入是一个元组类型,元组内是两个 Int 元件,输出是一个 Int 类型; add (x,y) = x...: Prelude> :t curry curry :: ((a, b) -> c) -> a -> b -> c // 实现加法的柯里化,支持多项连续相加,且不用提前声明项数; Prelude> let...floor floor :: (RealFrac a, Integral b) => a -> b Prelude> floor(1.2) 1 类型类中定义了一些函数,如果定义了一个新的类型,只要这个类型实现了类型类中声明的函数这个类型就属于该类型类了

    97130

    函数式编程与面向对象编程: 静态类型语言的表达力 静态类型语言与动态类型语言函数式编程与面向对象编程: 静态类型语言的表达力 静态类型语言与动态类型语言

    例如C/C++/Java/C# 弱类型语言(动态类型语言) 是指不需要进行变量/对象类型声明的语言,一般情况下不需要编译(但也有编译型的)。...3 动态类型语言的表达力 动态语言通常更方便开发较小的项目,因为可以无需声明类型而节省了很多麻烦。...也就是说静态类型语言可以保障package的命名空间分割,从而避免命名冲突,代码的良好隔离性。但是这个观点也缺乏说服力。...静态类型语言中C,VB都缺乏良好的命名空间分割,容易产生冲突,但是并没有影响他们做出来的系统就不够大,不够复杂。...,如果要学习一种新的写代码的思路,面向函数式的语言是目前最好的选择了,而Haskell有是函数式语言的先驱和集大成者,很多函数式语言的语法都是从Haskell借鉴来的。

    1.4K10

    模块_Haskell笔记2

    ,但不很方便,对于存在大量命名冲突的模块,可以通过qualified保留命名空间来避免冲突 GHCi环境 通过:m命令引用模块: > :m Data.List > :m Data.List Data.Map...模块用来组织代码,比如把功能相近的函数放到同一个模块中 例如二叉树的模块定义: module BTree -- 声明要暴露出去的函数及数据类型 ( Tree , singleton , add , fromList...BTree.hs 模块声明必须位于首行(之前不能有import之类的东西,import可以放在where之后) 模块中数据结构的导出与import语法类似: module MyModule (Tree(...所以 (==) `on` compare `on` 都是非常棒的惯用套路 P.S.可以通过:browse 命令查看模块中的所有函数及数据类型定义的类型声明 Data.Char String...Set.fromList 集合去重效率高于List.nub,但缺点是构造集合会对元素进行排序,所以得到的去重结果不保留原顺序(List.nub会保留) 参考资料 Haskell/Modules Haskell

    1.7K30

    编程范式 (Programming paradigm)

    一些语言是专门为某个特定的范型设计的,如Smalltalk和Java支持面向对象编程。而Haskell和Scheme则支持函数式编程。...抽象(Abstraction)通常是我们用来简化复杂的现实问题的方法。 在面向对象程序编程里,计算机程序会被设计成彼此相关的对象。对象则指的是类的实例。...许多流行的编程语言是面向对象的,它们的风格就是会透由对象来创出实例。...很多文本标记语言例如HTML、MXML、XAML和XSLT往往是声明式的。函数式编程,特别是纯函数式编程,尝试最小化状态带来的副作用,因此被认为是声明式的。...不过,大多数函数式编程语言,例如Scheme、Clojure、Haskell、OCaml、Standard ML和Unlambda,允许副作用的存在。

    1.7K10

    基础语法_Haskell笔记1

    一.简介 Haskell是一种纯函数式语言(purely functional programming language),其函数式特性的纯度没有争议 命令式语言要求你提供求解的步骤,Haskell则倾向于让你提供问题的描述...:($ 2) sqrt,中缀函数柯里化的小把戏 柯里化 Haskell函数默认都是柯里化的,都只接受一个参数: In Haskell, all functions are considered curried...,=后面是函数体 2个特点: 声明顺序无所谓 函数名首字母不能大写,不能数字开头 P.S.数学里把相似的东西用x x' x''的命名习惯表示,在Haskell里也可以这样做: y x = x ^ 2 y....匿名函数中的->与类型声明中的->语义相同,都表示“映射到”(maps to) 函数组合 数学中的函数组合的表达方式是f·g(x) = f(g(x)),Haskell与之类似: fg = f . g...,辅助函数也可以在自己的where子句中声明需要的变量和辅助函数 注意,where是一种语法结构,用来在函数底部声明变量/函数,作用域是包括guard在内的整个函数 P.S.非要单行的话,可以用分号隔开多个声明

    1.9K30

    对象、消息、运行期--9:类族模式

    类族模式 这种模式最大的好处就是,可以隐藏抽象基类背后的复杂细节,使用者只需调用基类简单的方法就可以返回不同的子类实例。...NSArray、NSDictionary、UIButton等 我们通过NSArray为例,先看俩个函数 -(BOOL)isKindOfClass:(Class)aClass; 接收者是否是aClass类的实例或者从这个类继承的任何类的实例...如果是返回yes -(BOOL)isMemberOfClass:(Class)aClass; 接收者是否是aClass的实例,如果是返回yes。...子类实例化出来的一个对象,这种设计模式就是类族模式 接下来写一个demo来说明类族 #import //定义一个继承与NSObject的抽象基类Phone...@end #import "Phone.h" #import "iPhone.h" #import "AndroidPhone.h" @implementation Phone //为Phone声明实现一个类方法和实例方法

    13810

    Hbase-2.0.0_03_Hbase数据模型

    Table 表在模式定义时预先声明。 1.5. Row 行键是未解释的字节。行按字典顺序排序,表中第一个出现的顺序是最低的。空字节数组用于表示表名称空间的开始和结束。...限定尾(列族限定符)可以由任意字节组成。列族必须在模式定义时预先声明,而列不需要在模式定义时定义,但可以在表启动并运行时动态添加。 物理上,所有列族成员都存储在文件系统中。...时间戳也可以由客户显式赋值,如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。每个cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。...通常如此长的时间包含时间实例,例如java.util.Date.getTime()或System.currentTimeMillis()返回的时间,即当前时间与1970年1月1日午夜之间的差值(以毫秒为单位...Column Metadata ColumnFamily实例没有存储的列元数据之外的内部KeyValue信息。

    1.7K20

    如何管理和维护算法族?只需知道策略模式

    这些不同的排序算法构成了一个算法族,你可以在需要的时候,根据需求或者条件限制(内存、复杂度等)适时选择具体的算法。 在面向对象的设计里,该如何设计这样一个算法族呢?...01 策略模式简介 策略模式用于算法的自由切换和扩展,对应于解决某一问题的一个算法族,允许用户从该算法族中任意选择一个算法解决问题,同时还可以方便地更换算法或者增加新的算法。...策略模式让算法可以独立于使用它的客户而变化。 02 策略模式结构 为了方便算法族中的不同算法在使用中具有一致性,在策略模式中会提供一个抽象层来声明公共接口,在具体的策略类中实现各个算法。...策略模式由上下文类和策略类组成,其UML结构如下图: Context(上下文类) :上下文类是使用算法的角色,可以在解决不同具体的问题时实例化不同的具体策略类对象; Strategy(抽象策略类):声明算法的方法...显然,在该实例中,可以冒泡排序、选择排序和插入排序分别封装为3个具体策略类,它们有共同的基类SortStrategy。

    34810
    领券