类 对象

# 面向对面编程 是一种思想
# 对象就是具体的拥有准确属性的一些变量
# 类:一类具有相同属性和方法的事物
# 字典是类
# d1={"k1":"v1"} # 对象
################################ 函数
# def func():
# pass
#############################################
# class Person: ## 类名首字母大写,有两个作用:1、属性的引用 2、实例化对象
# country="中国" ## 静态属性 数据属性
# def walk(self): ## 动态属性 函数属性 方法
# print("walk")
## 类第一个功能:属性引用
# print(Person.walk) # <function Person.walk at 0x000000000220F730>
# #############print(Person.walk(1)) ## 报错,少self参数
# print(Person.__dict__) # 查看类的属性
############################# 增删改查 #########################
# class Person: ## 类名首字母大写,有两个作用:1、属性的引用 2、实例化对象
# country="中国" ## 静态属性 数据属性
# def walk(self): ## 动态属性 函数属性 方法
# print("walk")

# print(Person.country) ## 静态属性查看 # 中国

# Person.role="man" #添加一个新 静态属性
# print(Person.role)

# Person.country="印度" # 修改
# print(Person.country)

# del Person.role # 删除
# print(Person.role) # 报错 因为删除了
################################################################
# Person.__dict__["country"])="印度" ## 报错 ,不能改变
# print(Person.__dict__["couuntry"])="inder" # 报错 ,不能改变




######################### 类可以完成的第2个功能: 实例化对象###############
#实例化: 从一个类中创造一个具体对象的过程
# class Person: ## 类名首字母大写,有两个作用:1、属性的引用 2、实例化对象
# country="中国" ## 静态属性 数据属性
# def walk(self): ## 动态属性 函数属性 方法
# print("walk")
# p=Person() ## Person的对象
# print(p) # <__main__.Person object at 0x00000000021ECC50>
## main 当前模块下 Person 是类 object 的对象
## 当前模块下 类的对象

# class Person: ## 类名有两个作用1、属性的引用 2、实例化对象
# country="中国" ## 静态属性 数据属性
# def __init__(self): # 初始化方法
# pass
# def walk(self): ## 动态属性 函数属性 方法
# print("walk")
# p=Person()
# print(p) ## Person的对象
# __init__ 构造方法:造对象
# 初始化: 给这个赤裸裸的对象添加属性 init ,
# 过程:Person() 开始调用init造对象,生成了一个裸人self,
# 接着self(一个初始化的对象)给了p
# 所以p和 self一样。 但是人要有各种属性,于是self要接收各种属性。
#
# class Person: ## 类名有两个作用1、属性的引用 2、实例化对象
# country="中国" ## 静态属性 数据属性
# def __init__(self,life_value,aggr,name,job): # 初始化方法
# self.lv=life_value # self 相当于 p
# self.aggr=aggr
# self.name=name
# self.job=job
# def walk(self): ## 动态属性 函数属性 方法
# print("walk")
#
# p = Person(1000, 2, "金", "teacher") # 如何让对象拥有具体的属性
###################################################
# print(p) # 查
# print(p.lv)
# print(p.aggr)

# p.sex="man" # 增加
# print(p.sex)

# p.sex="women" # 改
# print(p.sex)

# del p.sex # 删
# print(p.__dict__)
####################################################
# print(p.__dict__) # 查看p的所有属性
# print(p.__dict__["lv"])

# p.__dict__["lv"]=998 # 改
# print(p.__dict__["lv"],p.lv) ###### 对象名.__dict__中的属性值可以被修改

# p.__dict__["sex"]="man" ## 添加
# print(p.__dict__["sex"],p.sex)

# p.__dict__.pop("sex") # 删除
# del p.__dict__["sex"] # 或者
# print(p.__dict__)
# ############ 总结: ###################
# 类名的首字母大写
# 直接定义属性:静态(变量) 动态属性(函数)
# 类名的两个作用:1、属性的引用 2、实例化对象
# 实例化: 类名(参数)
# 1、构造方法:造对象
# 2、初始化: 给这个赤裸裸的对象添加属性 __init__ ,返回了一个初始化的对象
# (__init__ 初始化方法 可以没有 给对象添加一些基础属性)
# (self :就是这个对象本身)
# 对象和属性的操作; p.属性名 p.__dict__[] p是对象名
# 类和属性的操作; 类.属性名 类.__dict__[] (不能修改)



class Person: ## 类名有两个作用1、属性的引用 2、实例化对象
country="中国" ## 静态属性 数据属性
def __init__(self,life_value,aggr,name,job): # 初始化方法
self.lv=life_value # self 相当于 p
self.aggr=aggr
self.name=name
self.job=job
def walk(self): ## 动态属性 函数属性 方法
print("%s walk"%(self.name))

# p = Person(1000, 2, "金", "teacher") # 如何让对象拥有具体的属性
# Person.walk(p) # 金 walk
# p.walk() # 或者 金 walk

jin=Person(1000, 2, "金", "teacher")
alex=Person(1000, 1, "李", "ITer")
jin.walk()

jin.sex="None"
print(jin.sex)





#人狗大战
#人类  :
# 属性:# life_value aggr name job
# 方法:attack
class Person:
def __init__(self,life_value,aggr,name,job):
self.life=life_value
self.aggressive=aggr
self.name=name
self.job=job
def attack(self,dog):
print("%s攻击%s"%(self.name,dog.name))
dog.life=dog.life-self.aggressive

# dog:
# 属性:life_value aggr name kind
# 方法:bite
class Dog:
def __init__(self,life_value,aggr,name,kind):
self.life = life_value
self.aggressive = aggr
self.name = name
self.job = kind
def bite(self,jin):
print("%s攻击%s" % (self.name, jin.name))
jin.life = jin.life - self.aggressive

tiedan=Dog(1000,100,"铁蛋","土狗")
jin=Person(1000,200,"jin","teacher")

jin.attack(tiedan)
# print(tiedan.life)
tiedan.bite(jin)
# print(jin.life)




# 小明,10岁,男,上山去砍柴
# 小明,10岁,男,开车去东北
# 小明,10岁,男,最爱大保健
# 老李,90岁,男,上山去砍柴
# 老李,90岁,男,开车去东北
# 老李,90岁,男,最爱大保健
# 老张…

class Person:
def __init__(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
def Action(self):
l=["上山去砍柴","开车去东北","最爱大保健"]
for i in range(3):
i=l[i]
print("%s,%s,%s,%s" % (self.name, self.age, self.sex,i))
# print("%s,%s,%s,上山去砍柴"%(xiaoming.name,xiaoming.age,xiaoming.sex))
# print("%s,%s,%s,开车去东北"%(xiaoming.name,xiaoming.age,xiaoming.sex))
# print("%s,%s,%s,最爱大保健"%(xiaoming.name,xiaoming.age,xiaoming.sex))

xiaoming=Person("小明","10岁","男")
xiaoming.Action()

laoli=Person("老李","90岁","男")
laoli.Action()


# 求周长 面积
class Circle:
def __init__(self,r):
self.r = r
def Action(self):

print("周长是:",2*3.14*self.r) # 新知识
print("面积是:",3.14*self.r*self.r)


circle=Circle(1)
circle.Action()




posted @ 2017-11-17 19:28  nick560  阅读(150)  评论(0编辑  收藏  举报