当前位置: 首页 > 编程日记 > 正文

面向对象进阶2 组合

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一:命名空间

class Person:
    Country = '中国人'   # 静态变量

print(Person.Country)
alex = Person()   # 创建了一个空的命名空间
alex.name = 'alex'  # 对象
alex.Country = '泰国人'
egon = Person()
egon.name = 'egon'
# 类名.静态变量  对象.属性名
# 类名可以调用对象的属性么?   不可以
# 对象可以调用类中的属性么?  可以
print(Person.Country)
print(alex.Country)
print(egon.Country)

打印结果

163244_kH8m_3657436.png

注意:类名不可以调用对象的属性(不能清楚具体是哪个对象属性,两个country)

对象名可以调用类中的属性(alex.country)

由于对象和类之间存在一个关联关系
所以对象能够找到类
但是 类不能找到对象

二:对象.属性命名空间寻找(先在自己命名空间找,后再类命名空间找)

#使用类名.属性 只会寻找类中的静态变量名字
#使用对象.属性 会先在对象自己的命名空间中找名字
            # 如果找不到 再到类的内存空间中去找

class Person:
    Country = '中国人'   # 静态变量

alex = Person()
egon = Person()
print(alex.Country)
alex.Country = '印度人'
print(alex.Country)
Person.Country# 只要你使用静态变量  就用类名去调用

注意:当你使用静态变量时候,就用类名去调用

例子1

class Person:
    money = 0

mother = Person()
father = Person()
Person.money += 1000
Person.money += 1000
print(Person.money)
print(mother.money)
print(father.money)

打印结果:2000,2000,2000

例子2

class Person:
    money = [1]mother = Person()
father = Person()
mother.money[0] += 1000   [0]表示索引
father.money[0] += 1000   [0]表示索引
print(mother.money)
print(father.money)
print(Person.money)

打印结果    [2001],[2001],[2001]

注意:[0]表示索引,+= 1000 就是索引加。

例子3

class Person:
    money = [0]mother = Person()
father = Person()
mother.money = [1000]
father.money = [2000]
print(mother.money)
print(father.money)
print(Person.money)

打印结果:【1000】,【2000】,【0】 例子3中索引改变才让调用类属性改变,而本题没有变化。

例子4

a = 1
a = 2
print(a)
a = [1]
a.append(2)
print(id(a))
a[0] = 10
print(id(a))
print(a)
a = [1]
a = [2]

打印结果:2,40615688,40615688,【10,2】

例子5:

写一个类,能统计这个类被多少个对象实例化了.
所有的对象共享这个结果
init 静态变量class Foo:
    num = 0
    def __init__(self):
        Foo.num += 1

f1 = Foo()
print(Foo.num)
f2 = Foo()
print(Foo.num)
print(f1.num)

组合:圆和老师组合例题

组合 两个类的事儿
什么叫组合 : 一个类对象的属性 是 另外一个类的对象
两个类的事儿 :类与类之间有一种"什么有什么的关系"

圆的类
圆环 和 圆
圆环 也是一个类
属性 大圆半径 和 小圆半径
圆环 求面积 求周长
from math import pi
class Circle:
    def __init__(self,r):
        self.r=r
    def area(self):
        return pi*(self.r**2)
class Ring:
    def __init__(self,outer,inner):
        self.outer=Circle(outer)self.inner=Circle(inner)def  area(self):
        return self.outer.area()-self.inner.area()
r=Ring(10,3)
c=Circle(11)
print(Ring.area(r))
print(r.area())

例题:老师生日组合

参考答案

老师  name sex course(课程) birth
生日  年月日
class Birthday:
    def __init__(self,year,month,day):
        self.year = year
        self.month = month
        self.day = day
class Teacher:
    def __init__(self,name,sex,course,birth):
        self.name = name
        self.sex = sex
        self.course = course
        self.birth = birth   # birth是一个对象

birth = Birthday(1960,3,7)   # birth 是Birthday类的一个对象
alex = Teacher('alex','male','python',birth)
# alex.birth = birth
# time
'1960-3-7'
# 老师的年龄  2018 - 1960
print(birth)
import time
if birth.month == time.localtime().tm_mon  and \birth.day == time.localtime().tm_mday:
    print('生日快乐')print(time.localtime().tm_year - birth.year)

自己写:

class Birthday:
    def __init__(self,year,month,day):
        self.year=year
        self.month=month
        self.day=day
class Teacher:
    def __init__(self,name,course,birth):
        self.name=name
        self.course=course
        self.birth=birth
birth=Birthday(1960,4,4)
zhen=Teacher('zhen','python',birth)
# print(Birthday.year())
print(zhen.birth.year)
print(birth.year)

转载于:https://my.oschina.net/u/3657436/blog/1630538

相关文章:

Android基础知识之Manifest文件的组织结构

原文:http://android.eoe.cn/topic/android_sdk 是AndroidManifest.xml文件中的根标签,她必须包含一个标签和指定的xmlns:android、 package两个属性。 属性: xmlns:android定义了Android的命名空间。这个属性一般可以设置为:&quo…

java类的注释模板_IDEA添加Java类注释模版的方法

本文介绍了idea添加java类注释模版的方法,分享给大家,具体如下:idea版本:intellij idea 2017.2.5 x64eclipse能在类上方输入/**,回车添加类注释模版,但idea没有默认添加这个功能,需要做一些设置。下面介绍三…

POJ 2586 Y2K Accounting Bug(贪心)

题目连接:http://poj.org/problem?id2586 题意:某公司要统计全年盈利状况,对于每一个月来说,如果盈利则盈利S,如果亏空则亏空D。公司每五个月进行一次统计,全年共统计8次(1-5、2-6、3-7、4-8、5-9、6-10、…

【组队学习】10月份微信图文索引

10月份微信图文索引 一、组队学习相关 周报: Datawhale组队学习周报(第036周)Datawhale组队学习周报(第035周)Datawhale组队学习周报(第034周)Datawhale组队学习周报(第033周&…

java spring scope_如何在Spring中自定义scope的方法示例

大家对于 Spring 的 scope 应该都不会默认。所谓 scope,字面理解就是“作用域”、“范围”,如果一个 bean 的 scope 配置为 singleton,则从容器中获取 bean 返回的对象都是相同的;如果 scope 配置为prototype,则每次返…

学习ExtJS4 常用控件

ExtJS组件配置方式介绍 1.使用逗号分隔参数列表配置组件 首先来看一个简单的逗号分隔参数列表的例子。这个例子非常简单,它用来显示信息提示框。 2.使用Json对象配置组件 接下来看一个使用Json对象配置组件的例子,很多地方习惯性称之为配…

青少年编程竞赛交流群周报(第036周)

2021年10月31日(周日)晚20:00我们在青少年编程竞赛交流群开展了第三十六期直播活动。 一、直播内容 我们直播活动的主要内容如下: 讲解了上次测试中小朋友们做错的题目 Scratch青少年编程能力等级测试模拟题(四级)。…

中国电信打造“三朵云”战略 助力互联网+医疗发展

随着云计算、大数据的快速发展,全行业上云成为一个趋势,在健康医疗这个领域,应大势之趋,纷纷构建医疗云。近日,中国电信医疗云专区北京节点发布会在京顺利召开,会后北京电信副总经理项煌妹接受了中国IDC圈记…

python 数据类笔试题_一道 Python 类的笔试题详解

r {}class C(object):def __init__(self, a, b):self.a aself.b bif b a:orig super(C, cls)r[cls.instance] 1a C(1, a)b C(1, a)c C(1, b)l [a, b, c]for i in l:if i not in r:r[i] 1else:r[i] 1assert r[a] 2assert r[b] 2assert r[c] 1原题目要求如下&…

【优秀作业】粒子群算法(Python)

粒子群优化算法 一、概述 粒子群优化算法(Particle Swarm Optimization,PSO)的思想来源于对鸟捕食行为的模仿,最初,Reynolds.Heppner 等科学家研究的是鸟类飞行的美学和那些能使鸟群同时突然改变方向,分散…

警惕企业中的五种虚假执行力

第一种虚假执行力:无条件服从——只强调员工“服从”,不强调员工的智慧 很多人讲执行力,很喜欢强调员工的无条件服从。这种观念是OEM(代工生产)制造业时代的产物。实际上这是一种基于“规模制造”的虚假执行力,其本质是把人当成了…

真实记录疑似Linux病毒导致服务器 带宽跑满的解决过程

案例描述 由于最近我在重构之前的APP,需要和server端进行数据交互,发现有一个现象,那么就是隔1~2天总会发生获取数据超时的问题,而且必须要重启服务器才能解决。早在之前,我有留意到这个问题,但是由于这个服…

java集合总结_Java中集合总结

Java数组的长度是固定的,为了使程序能够方便地存储和操作数目不固定的一组数据,JDK类库提供了Java集合,这些集合类都位于java.util包中,但是与数组不同的是,集合中不能存放基本类型数据,而只能存放对象的引…

区块链基本解读

最近看着这个区块链,稍有新得,写下菜鸟自己的理解,希望大牛多多指点。 总体心得,如果互联网技术解决的是通讯问题的话,区块链技术解决的是信任问题。 下面举个日常例子:打赌 比如A和B赌石头是否为天然玉石&…

PDO防注入原理分析以及使用PDO的注意事项 (转)

我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下两个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特别注意什么? 一、为何要优先使用PDO? P…

LSGO软件技术团队招新 线下组队学习

团队招新 LSGO软件技术团队(Dreamtech算法组)成立于2010年09月,团队主要从事地理信息系统、管理信息系统、计算机视觉等领域的应用开发,团队同时具有培养学生的重要职能,毕业学生分布在IBM、百度、阿里、腾讯、京东、…

java spring 配置文件_[Java教程]Spring配置文件

[Java教程]Spring配置文件02016-03-19 00:00:08Spring配置文件是集成了Spring框架的项目的核心,引擎从哪里开始,中间都执行了哪些操作,小谈一下它的执行流程。容器先是加载web.接着是applicationContext.一种方法是加入ContextLoaderServlet这…

王子朝:一种高效且容错的方法用于协作车辆定位

王子朝是华北电力大学计算机系大四的学生,Dreamtech成员,参加了多期Dreamtech与Datawhale联合组织的组队学习活动,现保送西安电子科技大学深造。 这篇图文是他在线下组队学习时,为大家分享自己所看论文的总结。 希望参与我们组队…

python文件句柄_Python文件操作

classfile(object):def close(self): #real signature unknown; restored from __doc__关闭文件"""close() -> None or (perhaps) an integer. Close the file.Sets data attribute .closed to True. A closed file cannot be used forfurther I/O operation…

XML简单的增改删操作

XML文件的简单增改删&#xff0c;每一个都可以单独拿出来使用。 新创建XML文件&#xff0c;<?xmlversion"1.0"encoding"utf-8"?> <bookstore> <bookgenre"fantasy"ISBN"2-3631-4"> <title>Oberons Legacy&l…

javascript推荐书籍

WEB前端研发工程师&#xff0c;在国内算是一个朝阳职业&#xff0c;这个领域没有学校的正规教育&#xff0c;大多数人都是靠自己自学成才。本文主要介绍自己从事web开发以来(从大二至今)看过的书籍和自己的成长过程&#xff0c;目的是给想了解 JavaScript或者是刚接触JavaScrip…

【青少年编程竞赛交流】10月份微信图文索引

10月份微信图文索引 由于“组队学习”这个公众号的功能主要是组织Datawhale社群中的学习者们每个月的组队学习&#xff0c;所以&#xff0c;我另外新建了这个微信公众号“青少年编程竞赛交流”&#xff0c;在这个公众号上分享有关青少年编程方面的知识。如果大家需要就关注这个…

java 简单万年历_JAVA实现的简单万年历代码

本文实例讲述了JAVA实现的简单万年历。分享给大家供大家参考&#xff0c;具体如下&#xff1a;import java.util.Scanner;public class PrintCalendar {public static void main(String[] args) {int years 0;int month 0;int days 0;boolean isRun false;//從控制台輸入年…

mongoDB 入门指南、示例

http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html mongoDB 入门指南、示例 上一篇&#xff1a;简单介绍mongoDB 一、准备工作 1、 下载mongoDB 下载地址&#xff1a;http://www.mongodb.org/downloads 选择合适你的版本 相关文档&#xff1a;http://www.mongodb.…

中国电子学会图形化四级编程题:成语接龙

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

sidecar学习

1、SideCar的出现 微服务的结构是细粒度的&#xff0c;由多个服务构成&#xff0c;支持不同的服务用不同的语言来编写&#xff0c;比如a服务用python&#xff0c;b服务用java&#xff0c;C服务用php等&#xff0c;我们称为异构语言&#xff0c;那么在利用zuul来代理访问服务的时…

java整数常量区_在Java中,我可以用二进制格式定义一个整数常量吗?

所以&#xff0c;随着Java SE 7的发布&#xff0c;二进制表示法是标准的。 如果你对二进制有一个很好的理解&#xff0c;语法是非常简单明了的。byte fourTimesThree 0b1100; byte data 0b0000110011; short number 0b111111111111111; int overflow 0b1010101010101010101…

[LeetCode 120] - 三角形(Triangle)

问题 给出一个三角形&#xff0c;找出从顶部至底部的最小路径和。每一步你只能移动到下一行的邻接数字。 例如&#xff0c;给出如下三角形&#xff1a; [ [2], [3,4], [6,5,7], [4,1,8,3] ] 从顶部至底部的最小路径和为11&#xff08;即235111&#xff09;。 注意&#xff1a; …

中国电子学会scratch等级考试四级编程题:找出出现次数最多的数字

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…