• python的面对对象


    创建类

    使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾:

    class ClassName:
       '类的帮助信息'   #类文档字符串
       class_suite  #类体

    类的帮助信息可以通过ClassName.__doc__查看。

    class_suite 由类成员,方法,数据属性组成。

    实例

    以下是一个简单的 Python 类的例子:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    class Employee:
       '所有员工的基类'
       empCount = 0
     
       def __init__(self, name, salary):
          self.name = name
          self.salary = salary
          Employee.empCount += 1
       
       def displayCount(self):
         print "Total Employee %d" % Employee.empCount
     
       def displayEmployee(self):
          print "Name : ", self.name,  ", Salary: ", self.salary
    • empCount 变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用 Employee.empCount 访问。

    • 第一种方法__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法

    • self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

    self代表类的实例,而非类

    类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

    class Test:
        def prt(self):
            print(self)
            print(self.__class__)
     
    t = Test()
    t.prt()

    以上实例执行结果为:

    <__main__.Test instance at 0x10d066878>
    __main__.Test

    Python内置类属性

    实例化类其他编程语言中一般用关键字 new,但是在 Python 中并没有这个关键字,类的实例化类似函数调用方式。

    以下使用类的名称 Employee 来实例化,并通过 __init__ 方法接收参数。

    "创建 Employee 类的第一个对象"
    emp1 = Employee("Zara", 2000)
    "创建 Employee 类的第二个对象"
    emp2 = Employee("Manni", 5000)

    访问属性

    您可以使用点号 . 来访问对象的属性。使用如下类的名称访问类变量:

    emp1.displayEmployee()
    emp2.displayEmployee()
    print "Total Employee %d" % Employee.empCount

    完整实例:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    class Employee:
       '所有员工的基类'
       empCount = 0
     
       def __init__(self, name, salary):
          self.name = name
          self.salary = salary
          Employee.empCount += 1
       
       def displayCount(self):
         print "Total Employee %d" % Employee.empCount
     
       def displayEmployee(self):
          print "Name : ", self.name,  ", Salary: ", self.salary
     
    "创建 Employee 类的第一个对象"
    emp1 = Employee("Zara", 2000)
    "创建 Employee 类的第二个对象"
    emp2 = Employee("Manni", 5000)
    emp1.displayEmployee()
    emp2.displayEmployee()
    print "Total Employee %d" % Employee.empCount

    执行以上代码输出结果如下:

    Name :  Zara ,Salary:  2000
    Name :  Manni ,Salary:  5000
    Total Employee 2

    你可以添加,删除,修改类的属性,如下所示:

    emp1.age = 7  # 添加一个 'age' 属性
    emp1.age = 8  # 修改 'age' 属性
    del emp1.age  # 删除 'age' 属性

    你也可以使用以下函数的方式来访问属性:

    • getattr(obj, name[, default]) : 访问对象的属性。
    • hasattr(obj,name) : 检查是否存在一个属性。
    • setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。
    • delattr(obj, name) : 删除属性。
    hasattr(emp1, 'age')    # 如果存在 'age' 属性返回 True。
    getattr(emp1, 'age')    # 返回 'age' 属性的值
    setattr(emp1, 'age', 8) # 添加属性 'age' 值为 8
    delattr(emp1, 'age')    # 删除属性 'age'

    Python内置类属性 

    • __dict__ : 类的属性(包含一个字典,由类的数据属性组成)
    • __doc__ :类的文档字符串
    • __name__: 类名
    • __module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
    • __bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

    就拿__doc__举例:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    class A():
    
        def foo(self):
            '''this is __doc__'''
            print('hellow world!')
        
        bar = foo
        
        def clsmtd(cls, arg):
            print(str(arg))   
        
    a = A()
    print(a.foo.__doc__)

    输入就会输出:__doc__

    其实就是对象的下面一行的信息。

    其他的可以自己fuzz

  • 相关阅读:
    [日本语]自动词和他动词区别的重要性
    [日本语]授受关系动词总结
    [日本语]至少すくなく(と)も
    python3: 文件与IO
    python3: 迭代器与生成器(1)
    python3: 数字日期和时间(2)
    python3: 数字日期和时间(1)
    python3: 字符串和文本(4)
    Python Frame
    python3: 字符串和文本(3)
  • 原文地址:https://www.cnblogs.com/nul1/p/10225095.html
Copyright © 2020-2023  润新知