#! /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()