class(类的使用说明)
class 的三大特性
封装:内部调用对于外部用户是透明的
继承: 在分类里的属性,方法被自动继承
多态:调用这个功能,可以使多个类同时执行
r1 = Role(r1, 'Alex', 'Police', '15000') #实际上把r1赋给了self
self.name = 'Alex' # r1.name = 'Alex'
self.role = 'Police' # r1.role = 'Police'
self.money = 15000 # r1.money = 15000
r1.buy_guy() # Role.buy_guy(r1)
第一个例子 (建立一个简单的类)
class Dog:
def __init__(self, name):
self.name = name
def bulk(self):
print(‘%s : wa wa’%self.name)
dog = Dog('xiaoming')
dog.bulk()
第二个例子 #建立游戏角色 (封装) 私有属性,私有函数
class Role(object):
n = 123 #类变量
name = 123
def __init__(self, name, role, weapon, life_value = 100, money = 20000) :
self.name = name #实例变量
self.role = role
self.weapon = weapon
self.__life_value = life_value #函数的私有属性,外部不可以更改,只限于内部调用,可以打印出来
self.money = money
def __shot(self): # 私有函数,外部不可调用
print('shoting')
def got_shot(self):
self.__life_value -= 50
def buy_gun(self):
print('%s buy %s'%(self.name, self.weapon)
def show_status(self):
print('name : %s weapon : %s life_value %s‘%(self.name, self.weapon, self.__life_value))
r1 = Role('alex', 'Police', 'AK47') # 创建Role的实例
r1.name = 'xiaoming' #更改实例变量的name
del r1.name #删除实例变量的name
del r1 #删除实例r1
print(r1.n) #输出结果123 实例中没有该变量就去找类变量
print(r1.name) #输出结果 alex 实例中有该变量就用实例中的变量
r1.got_shot()
r1.show_status()
第三个例子,创建学校 (继承)
class School(object):
def __init__(self, name, addr):
self.name = name
self.addr = addr
self.student = []
self.teacher = []
def enroll(self, stu): #招收学生
print('you have been enrolled')
self.student.append(stu)
def hire(self, teac): #招收老师
print('you have been hired')
self.teacher.append(teac)
class SchoolMember(object):
def __init__(self, name, age):
self.name = name
self.age = age
def tell():
pass
class Student(SchoolMember): #继承SchoolMember
def __init__(self, name, age, stu_id, grade): #继承的函数,其变量也需要写在里面
super(Student, self). __init__(name, age) #=SchoolMember.__init__(name, age)
self.name = name
self.age = age
self.stu_id = stu_id
self.grade = grade
def tell(self):
print('''
name : %s
age : %s
stu_id : %s
grade : %s'''%(self.name, self.age, self.stu_id, self.grade))
def payment(self, number):
print('%s need to pay %s money'%(self.name, number))
class Teacher(SchoolMember):
def __init__(self, name, age, salary, course):
super(Teacher, self) .__init__(name, age)
self.name = name
self.age = age
self.salary = salary
self.course = course
def tell(self):
print('''
name : %s
age : %s
salary : %s
course : %s'''%(self.name, self.age, self.salary, self.course))
def teaching(self):
print('%s is teaching %s'%(self.name, self.course))
stu1 = Student('成华', 23, 10001, 1000) #创建学生的实例
tea1 = Teacher('小明', 22, 20000, 'python') #创建老师的实例
stu1.tell()
stu1.payment(20000)
sc1 = School('oldboy', '沙河') #创建学校1
sc2 = School('幼儿园', '天河') #创建学校2
sc1.enroll(stu1) #把stu1实例存储在sc1.student里面,可以实现sc1 与 stu1 的关联
sc2.hire(tea1) #把tea1实例存储在sc1.teacher里面,可以实现sc2 与 tea1 的关联
print(sc1.student[0].name) # 等价于 stu1.name
print(sc2.teacher[0].name) #等价于 tea1.name
第四个例子(多态) 一个接口多种实例形态
#通过animal_talk一个接口 可以实现多种动物的叫声
class Animal(object):
def __init__(self, name):
self.name = name
def eat(self):
print('%s is eating'%self.name)
def sleep(self):
print('%s is sleeping'%self.name)
@staticmethod #不需要创建实例
def animal_talk(obj): #实例作为参数
obj.talk() #如果传入cat,等价于调用了cat.talk()
class Cat(object):
def __init__(self, name):
self.name = name
def talk(self): #相同的函数名
print('%s miaomiao'%self.name)
class Dog(object):
def __init__(self, name):
self.name = name
def talk(self): #相同的函数名
print('%s wawa'%self.name)
cat = Cat('淑华')
dog = Dog('小花')
Animal.animal_talk(cat) #cat为传入的类
Animal.animal_talk(dog) #dog为传入的类
class(类的使用说明)的更多相关文章
- AutoResetEvent 类的使用说明
AutoResetEvent 类 官方描述:通知正在等待的线程已发生事件 命名空间:System.Threading 程序集:mscorlib 继承于:System.Threading.WaitHan ...
- 【jpeg_Class 类】使用说明
jpeg_Class类是针对图片操作类,可以获取图片属性.等比例缩略图片.裁切图片.图片上打印文字及打印水印等功能. 目录 原型 参数 返回 说明 Sub load(byVal path) path ...
- 【xml_Class、xmlElementNode_Class 类】使用说明
xml_Class.xmlElementNode_Class这两个类是针对XML相关操作的类. 1.xml_Class类是针对XML文档操作的类 目录: 类型 原型 参数 返回 说明 Sub Sub ...
- 【paging_Class 分页类】使用说明
类名:paging_Class 说明:分页类 注意: 1) 支持百万级数据分页 2) 支持多种类型的SQL语法,比如 Left Join 等. 3) 自动保存查询中的错误情况,记录保存在:/Cache ...
- 【outPut_Class 输出类】使用说明
对象:outPut 说明:定义输出结果类的相关操作.此对象的核心是[JSON]类,所以它继承了[JSON]类的所有方法 重要: 输出结果样式为XML时,自带根节点"root".输出 ...
- String类的使用说明
(1)Length()取一个字符串的长度:public int length(); public calss StringLength1{ public static void main(String ...
- 【xmlHttp_Class 远程访问类】使用说明
类名:xmlHttp_Class 说明:远程获取外部网站数据信息或执行一个外部网站程序 目录: 类型 名称 参数 返回 说明 属性 [必需] [xmlHttp].url = [urlString] - ...
- 【JSON类】使用说明
理解键名路径 键名路径(keyPath)用于定位json的键,比如:{book: {title:”中国人”} },键名路径 book.title 表定位到book下的title键. 对于值是数组类型的 ...
- 基于RTP的H264视频数据打包解包类
from:http://blog.csdn.net/dengzikun/article/details/5807694 最近考虑使用RTP替换原有的高清视频传输协议,遂上网查找有关H264视频RTP打 ...
随机推荐
- 初学者必读原生AJAX-异步的javaScript和XML
1.前台页面 <form action="#" method="post"> 姓名<input type="text" n ...
- PostgREST docker-compose 试用
PostgREST 是一款很不错的直接将pg 数据库暴露为restapi ,使用了基于行级别安全访问控制, 比较全的restapi 查询以及集成了swagger openapi docker-comp ...
- metabase docker-compose 运行说明
metabase 是一款比较产品化的一个数据分析工具,支持的数据源也比较多 以下为简单的docker-compose 运行文件,同时集成了mongo 以及graphql 引擎,方便数据 的api查询 ...
- CAM 查看里先选哪些层才能方便查看
CAM 检查 Gerber 时选 Layer 时有先后次序,才以看清楚是否有冲突. 比如检查 TOP 层时顺序应该是 MT ST L1 BOT 层检查顺序 MB SB L2/L4
- 一小时入门webpack
webpack现在已经成为了大众化的项目必要脚手架,基本上现在的很多项目都需要webpack,由于webpack的出现glup和grunt已经完败,今天我们来说一下webpack如何使用. 首先我们需 ...
- react组件的创建
最近项目接触react和rn,之前会一些vue和小程序,起初写react是很难受的,尤其是jsx的写法,不过2周过后感觉写起来有点舒服了... 目前react的组件一共有3种方式:React.crea ...
- jenkins 使用的python 不是指定的python 的解决方法
构建的时候加上要使用python的解析器路径 终端 which python 可以找到 python编辑器里面 import os os.system("which python" ...
- Java-Web中访问某个指定工程中的文件,报错后发现访问的文件是另一个工程里面的文件
问题: 浏览器向我的bingou项目中的UserDaoImpl.java发送请求, myeclipse报错:空指针异常 点击报错行之后,错误给定位到了另一个项目中的的一个文件 解决: 原因是文件名错误 ...
- 9.MVC模式 -- 改造源代码
一.MVC设计模式 软件可以认为有 Model View Controller 来组成 MVC设计模式 要求这三部分 应该尽量独立 互不干扰 使程序结构清晰 便于开发和维护 二.JAVAEE经典三层 ...
- [C#][MVC]DropDownListFor 默认值无法选中的 BUG
本文来自:https://www.cnblogs.com/craze/p/6124575.html 关于mvc中@Html.DropDownListFor和@Html.DropDownList默认值无 ...