码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象

时间:2017-06-29 22:28:46      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:pen   报错   pass   man   ide   style   overload   ret   smi   

类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对 象是类的实例。
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。 实例化:创建一个类的实例,类的具体对象。 
2 class 类名:
3     类的文档字符串
4     类体
5 ‘‘‘
类的用法:
  • 实例化产生对象
  • 属性引用:数据属性;函数属性
class Chinese:

    country = ‘china’.    #数据属性

    def __init__(self,name,color,age):
        #初始化,但是一定不能有返回值
        if not isinstance(name,str):
            raise TypeError #挑起异常
        
        self.name = name
        self.color = color
        self.age = age
   def talk(self):        #函数属性
        print(talk)

    def eat(self):
        print(eat)

    def sleep(self):
        print(sleep)

p1 = Chinese(mona,pink,18) ===》 p1-对象

类的数据属性可以增删查改

对象的数据属性可以增删查改

对象本身并没有函数属性,但是可以访问类的--对象的绑定方法。对象里通用的数据和函数是引用类的名称空间

对象的属性,优先从自己的__dict__字典里找,如果自己的字典里没有,访问类里的,如果类里也没有,报错,自己定义的属性对其他引用了类的相同属性没有影响

个完整的类--对象的应用案例:

classtools.py文件内容如下:---让每个对象都能输出自己的相应的信息

Assorted class utilities and tools

class AttrDispaly:
    ‘‘‘Provides an inheritable print overload method that displays instances with their class nams
    and name = value pair for each attribute stored on the instances itself
     (but not attrs inherit from its class).
     Can be mixed into any class,and work on any instance.‘‘‘
    def gatherAttrs(self):
        attrs = []
        for key in sorted(self.__dict__):
            attrs.append(%s=%s % (key,getattr(self,key)))
        return ,.join(attrs)


    def __str__(self):
        return [%s:%s] % (self.__class__.__name__,self.gatherAttrs())

if __name__ == __main__:
    class Toptest(AttrDispaly):
        count = 0
        def __init__(self):
            self.attr1 = Toptest.count
            self.attr2 = Toptest.count+1
            Toptest.count += 2

    class Subtest(Toptest):
        pass

    x,y = Toptest(),Subtest()
    print(x)
    print(y)

person.py的文件内容如下:

from classtools import AttrDispaly

class Person(AttrDispaly):
    def __init__(self,name,job = None,pay = 0):
        self.name = name
        self.job = job
        self.pay = pay

    def lastname(self):
        return self.name.split()[-1]

    def giveRaise(self,percent):
         self.pay = int(self.pay) * (1 + percent)

    # def __str__(self):
    #     return ‘[person:%s,%s]‘ % (self.name,self.pay)


class Manager(Person):
    def __init__(self,name,pay):
        # self.person = Person(name,‘mgr‘,pay)
        Person.__init__(self,name,mgr,pay)

    def giveRaise(self,percent,bonus=.1):
        Person.giveRaise(self, percent + bonus)

file文件:---将得到的数据储存到文件

from person import Person,Manager
bob = Person(bob smith)
sue = Person(sue jones,job = dev,pay = 200)
tom = Manager(tom jones,5000)


import shelve
db = shelve.open(persondb,)
for object in (bob,sue,tom):
    db[object.name] = object
db.close()

db = shelve.open(persondb)
# print(len(db))
#
# print(list(db.keys()))
# bob = db[‘bob smith‘]
# print(bob)

for key in db:
    print(key,===>,db[key])

 

 

 

 

面向对象

标签:pen   报错   pass   man   ide   style   overload   ret   smi   

原文地址:http://www.cnblogs.com/mona524/p/7096167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!