• 类 对象


    # 面向对面编程 是一种思想
    # 对象就是具体的拥有准确属性的一些变量
    # 类:一类具有相同属性和方法的事物
    # 字典是类
    # 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()




  • 相关阅读:
    *洛谷P1858 多人背包
    ZOJ3469 Food Delivery
    Hdu5115 Dire Wolf
    Codevs 2765 隐形的翅膀
    Hdu4055 Number String
    Codevs 1300 文件排版
    洛谷 P1412 经营与开发
    Codevs 4357 不等数列
    codevs 3333 高级打字机
    Bzoj 1086: [SCOI2005]王室联邦
  • 原文地址:https://www.cnblogs.com/nick477931661/p/7853178.html
Copyright © 2020-2023  润新知