《python:类和对象》由会员分享,可在线阅读,更多相关《python:类和对象(5页珍藏版)》请在金锄头文库上搜索。
1、第12关:类和对象类、实例、对象概念:1、概念:类:多个类似事物组成的群体的统称;实例:类的个例就叫做实例 (instance),可理解为“实际的例”对象:Python中的对象等于类和实例的集合:即类可以看作是对象,实例也可以看作是对象如:list、1,2分别是:类和实例;列表list是个类对象,1,2是个实例对象类的特征:每个类都有独特的属性(attribute)和法(method),是这个类的所有实例都共享的。换之,每个实例都可以调类中所有的属性和法类的创建类的创建本质是定义类的属性(特征描述)与法(类的实例的为),具体法如下:# 实例法中有个必须放在位的参数self# self会接收实例
2、化过程中传的数据,当实例对象创建后,实例便会代替self,在代码中运# 类名的字要写类的调1、类的实例对象创建当实例my_computer被创建出来,就可以调类中的属性和法。句话概括就是:类有的实例都会有2、实例对象调类当实例my_computer被创建出来,就可以调类中的属性和法调的语法是实例名.属性和实例名.法my_computer = Computer() #类的实例化,在computer类下创建个实例对象my_computerprint(type(my_computer) # 验证了my_computer属于Computer这个类print(my_computer) # 类下的实例对象
3、内存地址print(my_computer.screen) # 实例调类属性screen对应的值True,再print()打印出来my_computer.start() # 实例调类的法start()并执相应的功能在类的内部调类的属性和法:self是个临时替身在类的外部调类属性,我们得先创建个实例,格式为:实例名.属性在实例还没创建之前,如果想在类的内部调类属性,我们就需要“self”变量代替实例接收数据调格式:self.属性class Chinese: name = 吴枫 # 类属性name def say(self): print(self.name + 是中国)person = Chin
4、ese() # 创建Chinese的实例personperson.say() # 实例person替换掉self,self.name等价于person.name,也就是“吴枫”如果想在类的法内部调其他法时,同样需要到self来代表实例class Chinese: def greeting(self): print(很兴遇你) def say(self): self.greeting() print(我来中国)person = Chinese()person.say()最后person调say法时,self.greeting()就变成person.greeting(),也就是调实例法greeti
5、ng(),打印出很兴遇你,再打印出我来中国self代表的是类的实例本身,便数据的流转。对此,我们需要记住两点:1、只要在类中def创建法时,就必须把第个参数位置留给 self,并在调法时忽略它(不给self传参)2、当在类的法内部想调类属性或其他法时,就要采self.属性名或self.法名的格式class Chinese: name = 吴枫 # 类属性name def say(self, someone): # 带有两个参数的法,第个参数位置必须是self print(someone + 是中国)person = Chinese()print(person.name)person.say(吴
6、枫) # self调时要忽略,吴枫传给参数someone特殊法:初始化法初始化法的作:当每个实例对象创建时,该法内的代码须调就会动运,因此在初始化法内部完成类属性的创建,为类属性设置初始值,这样类中的其他法就能直接随时调定义初始化法的格式:def _ init_ (self)class Chinese: def _init_ (self): self.mouth = 1 # self.不能丢 self.eye = 2 # 在类法中定义类属性 def body(self): print(我有%s张嘴巴 % self.mouth) #直接调初始化法定义的类属性 print(我有%s只眼睛 % se
7、lf.eye)除了设置固定常量,初始化法同样可以接收其他参数,让传的这些数据能作为属性在类的法之间流转class Chinese: def _init_(self, name, birth, region): self.name = name # self.name = 吴枫 self.birth = birth # self.birth = 东 self.region = region # self.region = 深圳 def born(self): print(self.name + 出在 + self.birth) # 类的其他法通过self.属性名的形式调传的数据 def live
8、(self): print(self.name + 居住在 + self.region) # 类的其他法通过self.属性名的形式调传的数据 person = Chinese(吴枫,东,深圳) # 当初始化法有多个参数的时候,在实例化的时候就要传相应的值person.born()person.live()特殊法:_str_(self)_str_(self)法:当使print打印实例对象的时候,就会直接打印出在这个法中return的数据class Book: def _init_(self, name, author, comment, state = 0): self.name = name self.author = author ment = comment self.state = state def _str_(self): if self.state = 0: status = 未借出 else: status = 已借出 return 名称:%s 作者:%s 推荐语:%sn状态:%s % (self.name, self.author, ment, status)book1 = Book(像由样美丽,林达,你要光明来定义暗,暗来定义光明)# 传参数,创建实例对象print(book1)# 直接打印对象即可,不能写成print(book1._str_()