面向对象
Posted 皖心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象相关的知识,希望对你有一定的参考价值。
类(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])
以上是关于面向对象的主要内容,如果未能解决你的问题,请参考以下文章