`

Python学习笔记二(面向对象-类-方法-属性)

 
阅读更多



函数的定义
class
Python中的类没有什么public、private、protect

构造函数、析构函数
__init__(self)
__del__(self)

类的静态变量
class Student
  name="abc"
这东西其实就是相当于C#中的静态变量,但这里要注意是,初始化类的静态变量是这样的(DiveIntoPython中的例子)
class counter:
    count = 0                    
    def __init__(self):
      self.__class__.count += 1

实例的成员变量
class Student
  def __init__(self)
      self.name = "abc"


属性定义(类从object继承,但好像不是必须的,因为下面的代码也可以正常使用)
class Student:
    def __init__(self):
        self.__name="abc"
    def GetName(self):
        return self.__name
    def SetName(self,value):
        self.__name = value
    def DelName(self):
        del self.__name
    Name = property(GetName,SetName,DelName,'Student name')
说实话,当我写完这段代码的时候,我就不想使用属性了。这样定义起来也太不方便了,还要从object中继承。而且现在C#中,可以很简单的通过get、set来实现属性了。目前没有找到好的理由使用属性

只读属性(类必须从object继承,否则就不是只读的)
class Parrot(object):
    def __init__(self):
        self._voltage = 100000
    @property
    def voltage(self):
        """Get the current voltage."""
        return self._voltage

私有变量
class Student:
    def __init__(self):
        self.__name="abc"
很简单就是通过__ 两个下划线开头,但不是结尾的。就是私有了

私有方法
class Student:
    def __Getage(self):
        pass
和私有的变量一样,你可以尝试一下直接调用,编译器会有相应的提示

强制访问私有方法、变量
"私有"事实上这只是一种规则,我们依然可以用特殊的语法来访问私有成员。
上面的方法,我们就可以通过_类名来访问
aobj = Student()
aobj._Student__name
aobj._Student__Getage()

静态方法
class Class1: 
    @staticmethod 
    def test(): 
      print "In Static method..." 

方法重载
python是不支持方法重载,但是你代码了可以写。Python会使用位置在最后的一个。我觉得这可能以Python存储这些信息通过__dict__ 有关,它就是一个Dict。key是不能相同的。所以也就没办法出现两个GoGo 方法调用

class Student:
    def GoGo(self,name):
        print name
    def GoGo(self):
        print "default"

调用的时候你只能使用 obj.GoGo()这个方法。

一些特殊方法

__init__(self)  构造函数
__del__ (self)  析构函数
__repr__( self)   repr()
__str__( self)    print语句 或 str()

运算符重载
__lt__( self, other)
__le__( self, other)
__eq__( self, other)
__ne__( self, other)
__gt__( self, other)
__ge__( self, other)

这东西太多了。大家还是自己看Python自带帮助吧。

一些特殊属性
当你定义一个类和调用类的实例时可以获得的一些默认属性
class Student:
    '''this test class'''
    name = 'ss'
    def __init__(self):
        self.name='bb'
    def Run(self):
        '''people Run'''
    @staticmethod 
    def RunStatic(): 
        print "In Static method..."
print Student.__dict__ #类的成员信息
print Student.__doc__  #类的说明
print Student.__name__ #类的名称
print Student.__module__ #类所在的模块
print Student.__bases__ #类的继承信息
obj = Student()

print dir(obj)
print obj.__dict__ #实例的成员变量信息(不太理解Python的这个模型,为什么Run这个函数确不再dict中)
print obj.__doc__  #实例的说明
print obj.__module__ #实例所在的模块
print obj.__class__ #实例所在的类名

 

分享到:
评论

相关推荐

    python学习笔记-王纯业

    以下是一个Python学习笔记的大纲,涵盖了从基础到进阶的内容。你可以根据自己的学习进度和理解情况,逐步填充和完善这个大纲。 Python学习笔记大纲 一、Python基础 Python简介 Python的历史 Python的特点和应用...

    python学习笔记-面向对象高级编程-20200324

    文章目录面向对象高级编程使用__slots__使用__slots__使用@property练习多重继承Mixln小结定制类__str____iter____getitem____getattr____call__小结使用枚举类exercise小结使用元类type()metaclass 面向对象高级...

    python学习笔记(十一)面向对象

    文章目录面向对象认识面向对象官方定义编程语言面向对象语法self方法__str__ 方法__init__初始化方法__del__魔术方法 认识面向对象 与面向过程进行对比 面向过程:数学逻辑的映射,学会做个好员工 面向对象:生活...

    Python面向对象编程中关于类和方法的学习笔记

    python是一个面向对象的语言,而面向对象最重要的概念就是类和实例, 记得刚学习的时候不太理解这些概念,直到老师说了一句”物以类聚”. 没错就是类, 归类 物以类聚 类其实就是把一些相同特性的事物归成一类, 比如人 ...

    python学习笔记(十二)面向对象2

    文章目录面向对象面向对象三大特点类的继承继承语法方法重写多继承继承链访问权限类属性类方法静态方法多态特性对象支持字典操作 面向对象三大特点 封装:既是对数据封装,又是对处理数据的方法的封装 继承:强调的...

    python学习笔记06(类)

    Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类...

    python-anomaly-detection:一种使用半监督学习在Python中实现异常检测的面向对象方法

    2个类定义:一个继承自pandas.DataFrame并添加了一些小的新功能,一个主要类实现了用于异常检测模型的初始化,学习,报告和绘图的属性和方法。 具有2个功能的小型服务器响应数据集的计算结果 在kaggle上找到的信用...

    4.10 python 面向对象编程(类、对象、实例、继承、多态、封装、super()、类的装饰器、反射、内置魔术方法) 学习笔记

    文章目录1 类、对象/实例、实例化2 三大特性1)继承2)封装3)多态4)super方法5)类中的三个装饰器(内置函数)6)反射7)一些内置的魔术方法3 补充1)内置数据结构2)非(python)内置数据结构3)抽象类实例 1 类、...

    带标签_超详细笔记以及拓展延伸知识点总结_小甲鱼零基础入门学习python系列教程

    37讲:类和对象:面向对象编程 96 38讲:类和对象:继承 97 38延:多重继承的陷阱之钻石继承(菱形继承)问题 98 39讲:类和对象:拾遗 102 39延:Python Mixin 编程机制 105 40讲:类和对象:一些相关的BIF 108 40延...

    从零学Python之引用和类属性的初步理解

    Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程。Python已经成为最受欢迎的程序设计语言之一。2011年1月,它...

    廖雪峰Python教程学习笔记(5)

    面向对象编程9.1 类和实例9.2 访问限制9.3 继承和多态9.4 获取对象信息9.5 实例属性和类属性 8. 模块 在 Python 中,一个 .py 文件就称之为一个模块(Module)。 模块是一组Python代码的集合,可以使用其他模块,也...

    Python中的异常处理学习笔记

    Python 是面向对象的语言,所以程序抛出的异常也是类。 常见的异常类 1.NameError:尝试访问一个没有申明的变量 2.ZeroDivisionError:除数为 0 3.SyntaxError:语法错误 4.IndexError:索引超出序列范围 5.KeyError...

    Python廖雪峰教程学习笔记:Day11

    这两天主要学习一下面向对象的高级编程。 使用__slots__ 由之前学习类的定义和实例的创建,我们可以给实例绑定不同的属性,例如: class Student(object): pass s = Student() s.name = 'Tom' # 动态给实例绑定一个...

    Object-oriented-programming-for-JavaScript-developers:适用于JavaScript开发人员的面向对象编程的代码存储库

    #Javascript:Packt Publishing的面向对象编程 您将学到什么: 熟悉JavaScript语言构造的基础知识以及面向对象的编程及其应用程序。 学习使用Node.js在JavaScript中构建可扩展的服务器应用程序 以三种编程语言生成...

    Python—-装饰器

    Python学习之路,点击有全套Python笔记 闭包 内部函数对外部函数作用域里变量的引用。 函数内的属性,都是有生命周期的,都在函数的执行期间。 闭包内的闭包函数私有化了变量,完成了数据的封装,类似于面向对象 my_...

Global site tag (gtag.js) - Google Analytics