day20面向对象三大特性 , 类嵌套
#!/usr/bin/env python
# -*- coding:utf-8 -*- # 1.简述面向对象三大特性并用代码表示。
"""
封装:
class Account:
def __init__(self, name, age):
self.name = name
self.age = age def func(self):
pass 继承:
class A:
pass class B(A):
pass 多态:
class A:
def func(self, arg):
v = arg[-1]
""" # 2.什么是鸭子模型?
'''
都只有一个例如self.send参数的方法称为鸭子模型.
''' # 3.列举面向对象中的类成员和对象成员。
'''
类成员:
实例变量、类变量、静态方法、普通方法、类方法、属性
对象成员:
对象变量.
''' # 4. @classmethod和@staticmethod的区别?
'''
classmethod多了一个参数cls,输出自己类的名称不需要传值.
''' # 5.Python中双下滑 __ 有什么作用?
'''
成员修饰符:把该数据类型(方法/变量/参数)转换为私有.
''' # 6.看代码写结果
'''
class Base:
x = 1 obj = Base()
print(obj.x) # 1
obj.y = 123
print(obj.y) # 123
obj.x = 123
print(obj.x) # 123
print(Base.x) # 1
''' # 7.看代码写结果
'''
class Parent:
x = 1 class Child1(Parent):
pass class Child2(Parent):
pass print(Parent.x, Child1.x, Child2.x) # 1 1 1
Child2.x = 2
print(Parent.x, Child1.x, Child2.x) # 1 1 2
Child1.x = 3
print(Parent.x, Child1.x, Child2.x) # 1 3 2
''' # 8.看代码写结果
'''
class Foo(object):
n1 = '武沛齐'
n2 = '金老板' def __init__(self):
self.n1 = '女神' obj = Foo()
print(obj.n1) # 女神
print(obj.n2) # 金老板
''' # 9.看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
'''
class Foo(object):
n1 = '武沛齐' def __init__(self, name):
self.n2 = name obj = Foo('太白')
print(obj.n1) # 武沛齐
print(obj.n2) # 太白 print(Foo.n1) # 武沛齐
print(Foo.n2) # 报错
''' # 10.看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
'''
class Foo(object):
a1 = 1
__a2 = 2 def __init__(self, num):
self.num = num
self.__salary = 1000 def show_data(self):
print(self.num + self.a1) obj = Foo(666) print(obj.num) # 666
print(obj.a1) # 1
print(obj.__salary) # 私有,报错
print(obj.__a2) # 私有,报错
print(Foo.a1) # 1
print(Foo.__a2) # 私有,报错
''' # 11.看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
'''
class Foo(object):
a1 = 1 def __init__(self, num):
self.num = num def show_data(self):
print(self.num + self.a1) obj1 = Foo(666)
obj2 = Foo(999)
print(obj1.num) # 666
print(obj1.a1) # 1 obj1.num = 18
obj1.a1 = 99 print(obj1.num) # 18
print(obj1.a1) # 99 print(obj2.a1) # 1
print(obj2.num) # 999
print(Foo.a1) # 1
print(obj1.a1) # 99
''' # 12.看代码写结果,注意返回值。
'''
class Foo(object): def f1(self):
return 999 def f2(self):
v = self.f1() # v = 999
print('f2')
return v def f3(self):
print('f3')
return self.f2() def run(self):
result = self.f3()
print(result) obj = Foo()
v1 = obj.run() # f3 f2 999
print(v1) # None
''' # 13.看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
'''
class Foo(object): def f1(self):
print('f1') @staticmethod
def f2():
print('f2') obj = Foo()
obj.f1() # f1
obj.f2() # f2 Foo.f1() # 报错
Foo.f2() # f2
''' # 14.看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
'''
class Foo(object): def f1(self):
print('f1') @classmethod
def f2(cls):
print('f2') obj = Foo()
obj.f1() # f1
obj.f2() # f2 Foo.f1() # 报错
Foo.f2() # f2
''' # 15.看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
'''
class Foo(object): def f1(self):
print('f1')
self.f2()
self.f3() @classmethod
def f2(cls):
print('f2') @staticmethod
def f3():
print('f3') obj = Foo()
obj.f1() # f1 f2 f3
''' # 16.看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
'''
class Base(object):
@classmethod
def f2(cls):
print('f2') @staticmethod
def f3():
print('f3') class Foo(object):
def f1(self):
print('f1')
self.f2()
self.f3() obj = Foo()
obj.f1() # f1 然后报错
''' # 17.看代码写结果
'''
class Foo(object):
def __init__(self, num):
self.num = num v1 = [Foo for i in range(10)]
v2 = [Foo(5) for i in range(10)]
v3 = [Foo(i) for i in range(10)] print(v1) # [十个Foo函数]
print(v2) # [十个不同的Foo函数地址]
print(v3) # [十个不同的Foo函数地址]
''' # 18.看代码写结果
'''
class StarkConfig(object): def __init__(self, num):
self.num = num def changelist(self, request):
print(self.num, request) config_obj_list = [StarkConfig(1), StarkConfig(2), StarkConfig(3)]
for item in config_obj_list:
print(item.num) # 1 2 3
''' # 19.看代码写结果
'''
class StarkConfig(object): def __init__(self, num):
self.num = num def changelist(self, request):
print(self.num, request) config_obj_list = [StarkConfig(1), StarkConfig(2), StarkConfig(3)]
for item in config_obj_list:
item.changelist(666) # 1 666 2 666 3 666
''' # 20.看代码写结果
'''
class Department(object):
def __init__(self, title):
self.title = title class Person(object):
def __init__(self, name, age, depart):
self.name = name
self.age = age
self.depart = depart d1 = Department('人事部')
d2 = Department('销售部') p1 = Person('武沛齐', 18, d1)
p2 = Person('alex', 18, d1)
p3 = Person('安安', 19, d2) print(p1.name) # 武沛齐
print(p2.age) # 18
print(p3.depart) # d2地址
print(p3.depart.title) # 销售部
''' # 21.看代码写结果
'''
class Department(object):
def __init__(self, title):
self.title = title class Person(object):
def __init__(self, name, age, depart):
self.name = name
self.age = age
self.depart = depart def message(self):
msg = "我是%s,年龄%s,属于%s" % (self.name, self.age, self.depart.title)
print(msg) d1 = Department('人事部')
d2 = Department('销售部') p1 = Person('武沛齐', 18, d1)
p2 = Person('alex', 18, d1)
p1.message() # 我是武沛齐,年龄18,属于人事部
p2.message() # 我是alex,年龄18,属于人事部
''' # 22.编写类完成以下的嵌套关系
"""
角色:学校、课程、班级
要求:
1. 创建北京、上海、深圳三所学校。
2. 创建课程
北京有三种课程:Linux、Python、Go
上海有两种课程:Linux、Python
深圳有一种课程:Python
3. 创建班级(班级包含:班级名称、开班时间、结课时间、班级人数)
北京Python开设:21期、22期
北京Linux开设:2期、3期
北京Go开设:1期、2期
上海Python开设:1期、2期
上海Linux开设:2期
深圳Python开设:1期、2期
"""
class School:
def __init__(self, add):
self.add = add class Lesson:
def __init__(self, school_obj, les):
self.school = school_obj
self.les = les class Grade:
def __init__(self, lesson_obj, *args):
self.lesson = lesson_obj
self.qi = args s1 = School('北京')
s2 = School('上海')
s3 = School('深圳') l1 = Lesson(s1, ['Linux', 'Python', 'Go'])
l2 = Lesson(s2, ['Linux', 'Python'])
l3 = Lesson(s3, ['Python']) g1 = Grade(l1.les, '21期', '22期','1.1','2.2','80')
g2 = Grade(l2.les, '2期', '3期','1.1','2.2','80')
g3 = Grade(l3.les, '1期', '2期','1.1','2.2','80')
day20面向对象三大特性 , 类嵌套的更多相关文章
- 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍
面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...
- [.net 面向对象编程基础] (11) 面向对象三大特性——封装
[.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承. ...
- [.net 面向对象编程基础] (12) 面向对象三大特性——继承
[.net 面向对象编程基础] (12) 面向对象三大特性——继承 上节我们说了面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低 ...
- [.net 面向对象编程基础] (13) 面向对象三大特性——多态
[.net 面向对象编程基础] (13) 面向对象三大特性——多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...
- C++面向对象三大特性
面向对象三大特性 继承 public protected private public继承 public protected 不可见 private继承 private private 不可见 pro ...
- JAVA基础——面向对象三大特性:封装、继承、多态
JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据. ...
- python 面向对象(三大特性)
python 面向对象(初级) (思维导图 ↑↑↑↑↑) 概述: 面向过程:根据业务逻辑从上到下垒代码. 函数式:将某功能代码封装至函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...
- python 面向对象三大特性(封装 多态 继承)
今天我们来学习一种新的编程方式:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)注:Java和C#来说只支持面向对象编程,而python比较灵活即支持面 ...
- python面向对象三大特性
面向对象的三大特性: 封装.继承和多态 一.封装 封装,顾名思义就是将内容封装到某个地方,以后可以直接调用被封装到某处的内容. - 将内容封装到某处 - 从某处调用被封装的内容 第一步,将内容封装到某 ...
随机推荐
- C++设计模式视频讲解
设计模式(C++) 视频网址: http://www.qghkt.com/ 设计模式(C++)视频地址: https://ke.qq.com/course/318637?tuin=a508ea62 目 ...
- js 倒计时跳转
用js实现简单的倒计时结束页面跳转效果,主要用到setInterval()和clearInterval()方法,页面跳转使用window.location.href = " ".倒 ...
- 浅析C#中new、override、virtual关键字的区别
Virtual : virtual 关键字用于修饰方法.属性.索引器或事件声明,并使它们可以在派生类中被重写. 默认情况下,方法是非虚拟的.不能重写非虚方法. virtual 修饰符不能与 stati ...
- MyBatis学习日记(一):拜见小主——MyBatis
近日学习MyBatis,特将学习过程及一点心得记录于此. MyBatis为何物? MyBatis 是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC ...
- export,export default和import的区别以及用法
首先要知道export,import ,export default是什么 ES6模块主要有两个功能:export和import export用于对外输出本模块(一个文件可以理解为一个模块)变量的接口 ...
- Selenium 4即将发布:每个QA都应该知道的
阅读原文 Simon Stewart(Selenium的创始成员)在班加罗尔的Selenium大会议上正式确认了Selenium4.0的发布日期和一些主要更新.我们先来提前了解一下Selenium 4 ...
- scala的多种集合的使用(4)之列表List(ListBuffer)的操作
1.List列表的创建和添加元素 1)最常见的创建list的方式之一. scala> val list = 1 :: 2 :: 3 :: Nil list: List[Int] = List(1 ...
- maven导入外部jar包的方法
maven的导入外部jar包的方法(前提还有外部jar包) 1.问题: 在maven添加依赖包时,添加不成功,可以选择通过外部命令导入到仓库里. 2.命令:(在Dos命令行) mvn install: ...
- [Alpha阶段]第九次Scrum Meeting
Scrum Meeting博客目录 [Alpha阶段]第九次Scrum Meeting 基本信息 名称 时间 地点 时长 第九次Scrum Meeting 19/04/14 大运村寝室6楼 30min ...
- 使用Harbor配置Kubernetes私有镜像仓库
通常情况下,在私有云环境中使用kubernetes时,我们要从docker registry拉取镜像的时候,都会给docker daemo配置–insecure-registry属性来告诉docker ...