#计算正方形的周长和面积
class Square:
def __init__(self,side_len):
self.side_len = side_len
def perimeter(self):
return self.side_len*4
def area(self):
return self.side_len **2
s = Square(5)
print(s.perimeter())
print(s.area())

命名空间

class Course:
language = 'Chinese'
def __init__(self,teacher,course_name,period,price):
self.teacher = teacher
self.name = course_name
self.period = period
self.price = price python = Course('egon','python','6 months',20000)
Course.language = 'English' #对类里的静态属性进行修改
# Course.__dict__['language'] = 'Chinese'
# print(Course.language)
print(python.language)
#类中的静态变量,可以被对象和类调用
#对于不可变数据类型,类变量最好用类操作,而不应该用对象名操作
#对于可变数据类型,修改是共享的,重新赋值是独立的

class Course:
language = 'Chinese'
def __init__(self,teacher,course_name,period,price):
self.teacher = teacher
self.name = course_name
self.period = period
self.price = price python = Course('egon','python','6 months',20000)
linux = Course('oldboy','python','6 months',20000)
Course.language = 'English' #对类里的静态属性进行修改
# Course.__dict__['language'] = 'Chinese'
# print(Course.language)
# print(python.language)
# print(linux.language)
python.language = 'go-lang'
#类中的静态变量,可以被对象和类调用
#对于不可变数据类型,类变量最好用类操作,而不应该用对象名操作
#对于可变数据类型,修改是共享的,重新赋值是独立的
print(python.language) print(Course.language) print(linux.language)

go-lang
English
English

#类中的静态变量,可以被对象和类调用
#对于不可变数据类型,类变量最好用类操作,而不应该用对象名操作
python.language = 'Chinese'
del python.language
class Course:
language = ['English']
def __init__(self,teacher,course_name,period,price):
self.teacher = teacher
self.name = course_name
self.period = period
self.price = price python = Course('egon','python','6 months',20000)
linux = Course('oldboy','python','6 months',20000)
# Course.language = 'Chinese' #对类里的静态属性进行修改
# Course.__dict__['language'] = 'Chinese'
# print(Course.language)
# print(python.language)
# print(linux.language)
python.language[0] = 'Chinese'
# del python.language
#类中的静态变量,可以被对象和类调用
#对于不可变数据类型,类变量最好用类操作,而不应该用对象名操作
#对于可变数据类型,修改是共享的,重新赋值是独立的
print(python.language)
print(Course.language)
print(linux.language) ['Chinese']
['Chinese']
['Chinese']
class Course:
language = ['English']
def __init__(self,teacher,course_name,period,price):
self.teacher = teacher
self.name = course_name
self.period = period
self.price = price python = Course('egon','python','6 months',20000)
linux = Course('oldboy','python','6 months',20000)
# Course.language = 'Chinese' #对类里的静态属性进行修改
# Course.__dict__['language'] = 'Chinese'
# print(Course.language)
# print(python.language)
# print(linux.language)
python.language = ['Chinese']
# del python.language
#类中的静态变量,可以被对象和类调用
#对于不可变数据类型,类变量最好用类操作,而不应该用对象名操作
#对于可变数据类型,修改是共享的,重新赋值是独立的


print(python.language)
print(Course.language)
print(linux.language) ['Chinese']
['English']
['English']

#面向对象的三大特性:继承,多态和封装
#组合
class Dog:
def __init__(self,name,aggr,hp,kind):
self.name =name
self.aggr = aggr
self.hp =hp
self.kind =kind
def bite(self,persion):
persion.hp -= self.aggr
class Person:
def __init__(self,name,aggr,hp,sex):
self.name =name
self.aggr = aggr
self.hp =hp
self.sex =sex
self.money = 0
def attack(self,dog):
dog.hp -= self.aggr
def get_weapon(self,weapon):
if self.money >= weapon.price:
self.money -= weapon.price
self.weapon = weapon
self.aggr += weapon.aggr
else:
print('余额不足,请先充值') class Weapon:
def __init__(self,name,aggr,njd,price):
self.name = name
self.aggr = aggr
self.njd = njd
self.price = price def hand18(self,person):
if self.njd >0:
person.hp -= self.aggr * 2
self.njd -= 1 w = Weapon('打狗棒',100,3,998)
alex = Person('alex',0.5,100,'不详')
jin = Dog('金老板',100,500,'不详')
alex.money += 1000
alex.get_weapon(w)
print(alex.weapon)
print(alex.aggr)
alex.attack(jin)
print(jin.hp)
alex.weapon.hand18(jin)
print(jin.hp)
# 组合:一个对象的属性值是另一个类的对象
# alex.weapon是 Weapon类的一个对象

Python9-面对对象2-day23的更多相关文章

  1. 跟着百度学PHP[4]OOP面对对象编程-7-OOP的一些关键子讲解

    面对对象常用的一些关键子:http://www.cnblogs.com/xishaonian/p/6146794.html排版不是很好望见谅. THE END

  2. python面对对象编程----2:__init__

    面对对象编程估计我们最早接触到的就是__init__了,也就是实例的初始化处理过程: 1:来看看最基础的__init__ class Card(object): #抽象类Card,并不用于实例化 de ...

  3. Javascript面对对象. 第一篇

    Javascript,有两个种开发模式: 1.函数式(过程化)2.面对对象(oop),面对对象语言有一个标志,就是类,而通过类可以创建任何多个属性和方法,而Ecmascript没有类的概念,因此它的对 ...

  4. Java入门——(2)面对对象(上)

      关键词:面对对象.类..构造方法.this.static.内部类   一.面对对象的概念:把解决的问题安装一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题.其特点可概括为封装性.继承 ...

  5. Day-8: 面对对象编程

    面对过程的程序设计方法意在将函数分成子函数,再依次调用这些函数来解决问题. 而面对对象的程序设计方法,来源于自然界,类是实例的抽象,实例是类的具体.自定义出来的对象是类,而所有的数据都可以看成是对象, ...

  6. java基础--面对对象

    面对对象--概述 什么是对象? +---->对象可以泛指一切现实中存着的事物 +---->类是对象的抽象集合 什么是面对对象? +--->万物皆对象,面对对象实际就是人与万物接触== ...

  7. Python进阶_面对对象&面对过程

    这节主要讲面对对象与面对过程两种编程思想的主要区别. 一. 简单对比 面向过程是一种基础的方法,它考虑的是实际的实现步骤,一般情况下,面向过程是自顶向下逐步求精,其最重要的是模块化的思想方法. 面向对 ...

  8. python面对对象(不全解)

    面对对象:以人类为例,人类通用功能:吃喝拉撒,就可以封装成一个类,不同功能:嫖赌毒,就是对象的不同功能.继承,多态… 上码 class Person(object): def __init__(sel ...

  9. C语言面对对象设计模式汇编

    面向对象发展到今天,已经出现了许许多多优秀的实践.方法和技术.很多的技术都能够有效的提高软件质量.IBM上的<面向对象软件开发和过程>系列文章对面对对象设计从如下层面进行了详细的介绍:代码 ...

  10. python面对对象

    面对过程VS面对对象 面向过程的程序设计的核心是过程,过程就是解决问题的步骤,面向过程的设计就是考虑周全什么时候处理什么东西 优点:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可. ...

随机推荐

  1. redis集群模式

    1 弊端和优势 弊端:相比单机模式,集群模式会在节点之间同步数据,会降低20%-30%的性能,同时增加架构复杂性,提高硬件成本和学习成本. 优势:增加冗余,避免单点故障.单机模式如果要重启,必然会丢失 ...

  2. python 基础(十三) time模块

    日期和时间 一.time模块 import time 时间戳: 时间戳是指格林威治时间1970年1月1日0时0分0秒至现在的秒数   s(秒).ms(毫秒).μs(微秒).ns(纳秒), ​ 其中:1 ...

  3. [软件工程基础]2017.10.31 第四次 Scrum 会议

    具体事项 项目交接燃尽图 每人工作内容 成员 已完成的工作 计划完成的工作 工作中遇到的困难 游心 #7 掌握 PHP:#6 阅读分析 PhyLab 数据处理相关代码 #10 搭建可用的开发测试环境: ...

  4. GYM 101889I(mst+lca)

    最小生成树上倍增询问裸的. const int maxn = 2e5 + 5; int n, m, q; //图 struct Edge { int u, v; ll cost; bool opera ...

  5. 最大xor,and,or

    http://210.33.19.103/contest/998 and,or部分 并不用01trie,题目&题解:https://blog.csdn.net/dreaming__ldx/ar ...

  6. css3のtext-shadow

    text-shadow,让我们大家一起来学习一下吧. 语法: text-shadow:none | <shadow> [ , <shadow> ]* <shadow> ...

  7. JsonConvert对象实现json与对象之间的转换

    自己下载Newtonsoft.Json文件 使用JsonConvert对象转换 1. 2.添加引用到项目中,然后导入命名空间 3.就可以使用JsonConvert对象实现Json与类型之间的转换

  8. Java GUI 顶级容器JFrame、JDialog

    JFrame的常用构造函数: JFrame() JFrame(String title)   //窗口标题,会显示在左上角窗体图标的后面 JDialog的常用构造函数: JDialog() JDial ...

  9. POJ 2831 Can We Build This One?

    Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 1728   Accepted: 643 Case Time Limit: 2 ...

  10. 怎样配置JDK开发环境

    (1)我们需要配置三个环境变量,分别是JAVA_HOME,CLASSPATH,Path (2)变量名输入:JAVA_HOME,变量值输入:D:\Java\jdk1.8.0_05点击确定. 需要特别注意 ...