#计算正方形的周长和面积
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. Influxdb 时序数据库 windows 安装

    Influxdb 是一款比较火爆的时序数据库,本文介绍如何在 windows 平台下安装. 1.场景: windows 平台的 influxdb 似乎只支持单机非windows 服务的安装方式 适用于 ...

  2. SpringMVC-高级参数绑定

    绑定数组 需求 在商品列表页面选中多个商品,然后删除. 需求分析 此功能要求商品列表页面中的每个商品前有一个checkbook,选中多个商品后点击删除按钮把商品id传递给Controller,根据商品 ...

  3. eclipse打开jsp的方式怎么设置成默认

    https://jingyan.baidu.com/article/4ae03de34137be3eff9e6b93.html

  4. 自己写一个轻量的JqueryGrid组件

    接触mvc不久,突然没有了viewstate和服务端控件处处都觉得不顺手,很多在webform时不必要考虑的问题都出现在眼前,这其中分页时查询条件保持的问题又是最让我头疼的事情,权衡再三,决定用aja ...

  5. 转 DG switchover

    I. Pre-Switchover Checks These steps should be completed before the switchover planned maintenance w ...

  6. Longest Palindromic Substring笔记

    这是一道在leetcode上看到的题目 一开始,我能想到的思路是蛮力法: 就遍历每个字符,然后对每个字符都尝试从1到n的长度,看有没有回文串,并记录以该字符起始的回文串的最大长度.这个思路其实没有上手 ...

  7. STM32使用注意事项

    一 IO引脚: 1.1 PC13~PC15作为IO输出的限制,PC13/PC15输出最大2MHZ,负载2PF,驱动电流不超过3mA,所以不能用来驱动LED. 2 输出的引脚是否可以用来读引脚: cas ...

  8. performSelector withObject afterDelay 在子线程上调用不运行

    如题,这是最近在修改一个数据同步模块时发现的问题.整个数据同步的任务是在App启动后放在一个后台执行的线程中的,执行某个单条数据同步任务成功后,会使用 [self performSelector:(n ...

  9. sourceTree免注册免登陆使用方法-Windows

    安装sourceTree需要注册Google账号,而现在国内注册账号需要FQ,超级麻烦,所以还是免注册的号. 处理方法: 解决办法 在目录C:\Users\{youruser}\AppData\Loc ...

  10. 一步步实现自己的ORM(四)

    通过前3章文章,大致对ORM有一定的了解,但也存在效率低下(大量用了反射)和重复代码,今天我们要对ORM进行优化. 具体流程如下: 我们优化的第一个就是减少反射调用,我的思路是定义一个Mapping, ...