#!/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面向对象三大特性 , 类嵌套的更多相关文章

  1. 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍

    面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...

  2. [.net 面向对象编程基础] (11) 面向对象三大特性——封装

    [.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承. ...

  3. [.net 面向对象编程基础] (12) 面向对象三大特性——继承

    [.net 面向对象编程基础] (12) 面向对象三大特性——继承 上节我们说了面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低 ...

  4. [.net 面向对象编程基础] (13) 面向对象三大特性——多态

    [.net 面向对象编程基础] (13) 面向对象三大特性——多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...

  5. C++面向对象三大特性

    面向对象三大特性 继承 public protected private public继承 public protected 不可见 private继承 private private 不可见 pro ...

  6. JAVA基础——面向对象三大特性:封装、继承、多态

    JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据. ...

  7. python 面向对象(三大特性)

    python 面向对象(初级) (思维导图 ↑↑↑↑↑) 概述: 面向过程:根据业务逻辑从上到下垒代码. 函数式:将某功能代码封装至函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...

  8. python 面向对象三大特性(封装 多态 继承)

    今天我们来学习一种新的编程方式:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)注:Java和C#来说只支持面向对象编程,而python比较灵活即支持面 ...

  9. python面向对象三大特性

    面向对象的三大特性: 封装.继承和多态 一.封装 封装,顾名思义就是将内容封装到某个地方,以后可以直接调用被封装到某处的内容. - 将内容封装到某处 - 从某处调用被封装的内容 第一步,将内容封装到某 ...

随机推荐

  1. C#基础委托回顾

    C#基础委托回顾 前言 快忘记了. 委托的特点 委托类似于 C++ 函数指针,但它们是类型安全的. 委托允许将方法作为参数进行传递. 委托可用于定义回调方法. 委托可以链接在一起:例如,可以对一个事件 ...

  2. C#零基础入门-2-Visual Studio (VS)程序初始化及各组成部分

    X:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe 可以使用桌面快捷方式启动,也可以从开始菜单启动,还 ...

  3. 【Spring Cloud笔记】 断路器-hystrix

    在微服务架构中,一个微服务的超时失败可能导致瀑布式连锁反映,Spring Cloud Netflix 的断路器Hystrix通过自主反馈,防止了这种情况发生.下面介绍简单的断路器使用方法. [step ...

  4. ASP.NET Zero--WEB.HOST应用程序

    WEB.HOST应用程序 AspNet Zero解决方案包含一个额外的项目Web.Host,它将所有应用程序功能公开为API.因此,您可以从任何设备使用API​​.实际上,Web.Mvc项目也是这样做 ...

  5. maven生成项目慢解决办法

    maven生成项目慢,原因:在线更新archetype-catalog.xml文件,从Apache中央仓库. 解决办法,手动下载,放到maven环境. 备用下载地址: https://files.cn ...

  6. 关于Xcode10的那些事

    前言 这里主要介绍一下Xcode10 版本主要更新的内容. 随着iOS12的发布,Xcode10已经可以从Mac App Store下载. Xcode10包含了iOS12.watchOS 5.macO ...

  7. 我的Scala之路(1):列表List操作

    List() 或 Nil 空 List List("Cool", "tools", "rule) 创建带有三个值"Cool",&q ...

  8. 03-三层交换机的OSPF实验

    三层交换机的OSPF实验 1.OSPF介绍 开放式最短路径优先(英语:Open Shortest Path First,缩写为 OSPF)是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故 ...

  9. 初识Haskell 二:基本操作符、类型Type、数据结构

    对Discrete Mathematics Using a Computer的第一章Introduction to Haskell进行总结.环境Windows 1. 在安装了ghci后,便可以进行Ha ...

  10. BSScrollViewEdgePop

    https://blog.csdn.net/qq_17190231/article/details/84201956 2018年11月18日 16:52:39 FreeBaiShun 阅读数:66 标 ...