#! /usr/bin/env python # -*- coding:utf-8 -*- # Author linux ku class Dog(): def __init__(self, name): self.name = name def bulk(self): print("%s : Wang wang wang!"%self.name) dog1 = Dog("dog1") dog2 = Dog("dog2") dog1.bulk() dog2.bulk() class Role(object): #类名 n = 222 #类变量 :先找实例变量然后再找类变量 def __init__(self, name, role, weapon, life_value=100, money=15000, secret = "secret"): #构造函数 #构造函数,这个东西的目的,我觉得是再内存中开辟一个位置,相当于是给了一个铭牌号。 #在实例化的时候做一些类的初始化的工作。 #内存的运行是,内存的门牌号其实是在赋值的时候进行的,比如 r1 = Role(r1,xxx,xx),时候申请一下,然后在运行这个构造函数的时候把具体的内容传入 #运行构造函数的时候是,self是r1传入赋予r1的值,所以self其实就是用来区分的。所以说参数self就是预留给实例化名称的。 self.name = name #实例变量(静态属性),作用域是在实例的本身 self.role = role self.weapon = weapon self.life_value = life_value self.money = money self.__secret = secret #私有属性,只能在内部的方法中可以改动 #下面的函数是在类里面的,没有在实例化的地方存起来的 def shot(self): #这里的self是实例化的具体名称,标志着地址 print("shooting...") def got_shot(self): #类的方法,功能(动态属性) print("ah...,I got shot...") def show_secret(self): print("The secret is %s" %self.__secret) def __secret_method(self): #私有方法,只能内部调用 print(self.__secret) def show_secret_method(self): self.__secret_method() def buy_gun(self, gun_name): print("just bought %s" % gun_name) def show_all_vari(self): print("All the vari: %s" % {self.name,self.role,self.money,self.life_value} ) #析构函数:在实例释放、销毁的时候执行的,通常用于做一些收尾工作,如关闭一些数据库链接,打开的临时文件 #这个函数会在程序退出的时候自动使用,也可以手动提前使用 del r1 def __del__(self): print("end the example.%s " % self.name) print("or do other necessary work.") r1 = Role(‘Alex‘, ‘police‘, ‘AK47‘) #生成一个角色 r1.show_all_vari() r1.got_shot() #实际是Role.got_shot(r1) print("this is secret method:") r1.show_secret_method() print("this is secret property:") r1.show_secret() print("---------") r2 = Role(‘Jack‘, ‘terrorist‘, ‘B2‘) #生成一个角色 r2.got_shot()