胖蔡说技术
随便扯扯

Python面向对象

Python面向对象的几个基本概念

  • 类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 实例变量:定义在方法中的变量,只作用于当前实例的类。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟”是一个(is-a)”关系(例图,Dog是一个Animal
  • 实例化:创建一个类的实例,类的具体对象。
  • 方法:类中定义的函数
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

类的创建

格式:

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

def init(self): #self为类的实例对象,每个方法中必须要的参数但不需要在调用的时候传入. print "这是类的构造函数" class_suite #类体

# 类的实例化: 
customer= ClassName();

python内置类属性

  • dict : 类的属性(包含一个字典,由类的数据属性组成)
  • doc :类的文档字符串
  • name: 类名
  • module: 类定义所在的模块(类的全名是’main.className‘,如果类位于一个导入模块mymod中,那么className.module 等于 mymod
  • bases: 类的所有父类构成元素(包含了一个由所有父类组成的元组)

python 类的继承

语法格式: class className(fartherClassName): python 中类的继承的一些基础语法:

  • 继承父类的__init__构造函数不会被自动调用,他需要在当前子类的构造函数中自行调用调起来.
  • 调用父类方法时,需要加上父类的类名前缀,并且需要添加上self参数变量
  • 方法执行顺序:子类—>父类
  • 支持多继承,多继承用元组方式添加
  • issubclass():布尔函数判断一个类是另一个类的子类或者子孙类,语法:issubclass(sub,sup)
  • isinstance(obj, Class):布尔函数如果objClass类的实例对象或者是一个Class子类的实例对象则返回true

python 类的方法和属性

1)类的私有属性 __private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs

2)类的方法 在类的内部,使用 def 关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数

3)类的私有方法 __private_method:两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用 self.__private_methods

示例代码

#!/usr/bin/python   
# -*- encoding:utf-8 -*-

'''用于了解类的使用的'''

__metaclass__ = type
class User:
    'is a basic user info class'
    tag = "user"
    
    def __init__(self,*params):
        print "create %s" % self.__class__.__name__
        self.params=params

    def showName(self):
        print "this user name is:",self.params[0]
        return self.params[0]
    def __del__(self):
        #析构方法, 删除一个对象
        print "destory %s" % self.__class__.__name__
    
    
user= User("hfai",23,"monkey")
print user.showName(),"and params is:",User.tag

print "user dicts is:",User.__dict__
print "user doc is:",User.__doc__
print "user module:",User.__module__
print "user name is:",User.__name__
print "user bases is:",User.__bases__

#del user


#class about extends father
class SubClass(User):
    
    def __init__(self):
        
        print "this is origion function."
    def showName(self):
        print "this is children methods."
        return
    

a =SubClass()
# a.showName()
# a.showName()
SubClass.showName(a) #简写方式.

赞(1) 打赏
转载请附上原文出处链接:胖蔡叨叨叨 » Python面向对象
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏