加入收藏 | 设为首页 | 会员中心 | 我要投稿 鄂州站长网 (https://www.0711zz.com/)- 数据分析、网络、云渲染、应用安全、大数据!
当前位置: 首页 > 编程开发 > Python > 正文

python基础 面向对象编程

发布时间:2020-07-09 03:34:47 所属栏目:Python 来源:互联网
导读:面向对象编程的基本思想 类和实例 类用于定义抽象类型 实例根据类的定义创建出来 python 定义类并创建实例 在python 中,通过class 关键字定义,以Person 为例 定义一个perso

面向对象编程的基本思想   类和实例     类用于定义抽象类型     实例根据类的定义创建出来 python 定义类并创建实例   在python 中,通过class 关键字定义,以Person 为例   定义一个person 类如下:     class Person(object):       pass python 创建实例属性    如何让每个实例拥有各自不同的属性。       xiaoming = Person()       xiaoming.name = 'Xiao Ming'       xiaoming.gender = 'Male'        xiaoming.birth = '1990-1-1'       给xiaohong加上的属性不一定要和xiaoming相同:       xiaohong = Person()       xiaohong.name = 'Xiao Hong'       xiaohong.school = 'No. 1 High School'        xiaohong.grade = 2 python 初始化实例属性   如何让Person 类在创建的时候就拥有name gender 和 birth 属性。   在定义Person 类时,可以为Person 类添加一个特殊的 _init_()   在创建实例时,_init_() 方法被自动调用,我们能再此为每个实例   都统一加以下属性:          class Person(object):       def_init_(self,name,gender,birth):         self.name = name         self.gender = gender         self.birth = birth            __init__()方法的第一个参数必须是self(也可以用别的名字,       但建议使用习惯用法),后续参数则可以自由指定,和定义函数没有任何区别。       相应的,创建实例时,就必须提供除self 以外的实例         xiaoming = Person('Xiao Ming','Male','1991-1-1')         xiaohong = Person('Xiao Hong','Female','1992-2-2')              有了__init__()方法,每个Person实例在创建时,都会有name、gender       和birth这3个属性,并且,被赋予不同的属性值,访问属性使用.操作符:           print xiaoming.name # 输出 'Xiao Ming'            print xiaohong.birth # 输出 '1992-2-2' python 中访问限制     我们可以给一个实例绑定很多属性,如果有些属性不希望被外     部访问到怎么办?     Python对属性权限的控制是通过属性名来实现的,如果一个属     性由双下划线开头(__),该属性就无法被外部访问。看例子:       class Person(object):           def __init__(self,name):           self.name = name           self.title = 'Mr'           self.__job = 'Student'       p = Person('Bob')         print p.name           Bob         print p._title           Mr         print p.__job           Error python 创建类属性     类是模板,而实例则是根据类创建的对象。     绑定在一个实力上的属性不会影响其他实例,但是类本身是一个对象。     如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且     所有实例访问的类属性都是同一个,也就是说,实例属性没个实例     各自拥有,互相独立,而类属性有且只有一份。     定义类可以直接在class 中定义       class Person(object):         address = 'Earth'         def __init__(self,name):         self.name = name     由于python 是动态语言,类属性也可以动态添加修改       Person.address = 'China'       print p1.address         ‘China’     因为类属性只有一份,所以,当Person类的address改变时,       所有实例访问到的类属性都改变了。 python 中类属性和实例属性名字冲突怎么办。     修改类属性会导致所有实例访问到的类属性全部收到影响,但是,     如果在实例变量上修改类属性发什么问题呢。     当实例属性和类属性重名时,实例属性优先级高     它将屏蔽掉对类属性的访问。 python 中定义实例方法     实例的方法就是在类中定义的函数,它的第一个参数永远     是self,指定调用该方法的实体本身,其他参数和一个普通     函数完全一样的。     class Person(object):       def __init__(self,name):       self._name = name       def get_name(self):         return self._name     et_name(self)就是一个实例方法,它的第一个参数是self     。__init__(self,name)其实也可看做是一个特殊的实例方法。     p1 = Person('Bob') print p1.get_name() # self不需要显式传入 # => Bob python 中方法也是属性     在class 中定义的实例方法其实也是属性,它实际上     是一个函数对象。       class Person(object):         def __init__(self,score):           self.name = name           self.score = score         def get_grade(self):           return 'A' python 中定义类方法     和属性类似,方法也分实例方法和类方法。     在class 中定义的全部是实例方法,实例方法第一个参数 self     是实例本身。       在class 中定义类方法,需要这么些。       class Person(object):         count = 0;       @class smethod       def how_many(cls):         return cls.count       def __init__(self,name):         self.name = name         Person.count = Person.count + 1       print Person.how_many()       p1 = Person('Bob')       print Person.how_many()     过标记一个@classmethod,该方法将绑定到Person类上,     而非类的实例。类方法的第一个参数将传入类本身,通常将     参数名命名为cls,上面的cls.count实际上相当于Person.count。

(编辑:鄂州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读