标签:改变 hide 变量 bit print 参数 ict 处理 display
面向对象
类:抽象的
对象:具体的
class person: #类名为person def __init__(self,*args): #__init__为初始化方法;self是一个必须传的对象 self.name = args[0] self.hp = args[1] self.aggr = args[2] self.sex = args[3] def walk(self,n): #定义方法;一般情况下必须传self参数,且必须写在第一个;后面还可以传其他参数,想传多少就多少 print("%s走了%s步" % (self.name,n) country = "china" #创造了一个只要是这个类就一定有的属性(静态属性) ppd = person("王者","100","5","male") #对象 = 类(参数),这个过程叫实例化 print(ppd.name) #查看属性值 print(ppd.__dict__) #查看所有属性 ppd.walk(10) #person.walk(ppd,10) #调用方法 类名.方法名(对象名) print(person.country) #可以查看类中的静态属性,不需要实例化就可以查看
对象 = 类名() #实例化过程;对象也叫实例 过程: 类名():首先会创造出一个对象,创建了一个self变量 调用__init__方法,类名括号里的参数会被这里接收 执行__init__方法 返回self 对象能做的事: 查看属性 调用方法 __dict__方法对于对象的增删改查操作都可以;跟操作字典的语法一样 类名能做的事: 实例化 调用方法 调用类中的属性,也就是调用静态属性 __dict__方法对于类中的名字只能看,不能操作
何时使用面向对象:
非常明显的处理一类事物,这些事物都具有相似的属性和功能
当有几个函数需要反反复复传入相同的参数的时候
一些参数都是对象的属性的时候
from math import pi class Circle: def __init__(self, r): self.r = r def area(self): return pi*(self.r**2) def perimeter(self): return 2*pi*self.r c = Circle(6) print(c.area()) print(c.perimeter())
class Person: def __init__(self, name, hp, aggressive, sex): self.name = name self.hp = hp self.aggressive = aggressive self.sex = sex def attack(self, dog): dog.hp -= self.aggressive class Dog: def __init__(self, name, hp, aggressive, king): self.name = name self.hp = hp self.aggressive = aggressive self.kind = king def bite(self, person): person.hp -= self.aggressive if 0 < person.hp < 100: print("%s咬了%s, %s掉了%s血" % (self.name, person.name, person.name, self.aggressive)) elif person.hp <= 0: print("{}凉了".format(person.name)) pq = Person("佩奇", 100, 10, "Male") ted = Dog("泰迪", 500, 50, "Teddy") # ppd.attack(ted) #Person.attack(ppd, ted) # print(ted.hp) #490 ted.bite(pq) Dog.bite(ted, pq) print(pq.hp) #泰迪咬了佩奇, 佩奇掉了50血 #佩奇凉了 #0
类中的静态变量可以被对象和类调用:
对于不可变数据类型来说,类变量最好用类名操作
对于可变数据类型来说,对象名的修改是共享的,重新赋值是独立的
#不可变数据类型,类名方式修改变量 class Test: name = "ted" def __init__(self, x): self.x = x a = Test(10) b = Test(100) Test.name = "peiqi" print(Test.name) #peiqi print(a.name) #peiqi print(b.name) #peiqi #不可变数据类型,对象名方式修改变量 class Test: name = "ted" def __init__(self, x): self.x = x a = Test(10) b = Test(100) a.name = "peiqi" print(Test.name) #ted print(a.name) #peiqi print(b.name) #ted #可变数据类型,修改变量是共享的 class Test: name = ["ted"] def __init__(self, x): self.x = x a = Test(10) b = Test(100) a.name[0] = "peiqi" print(Test.name) #peiqi print(a.name) #peiqi print(b.name) #peiqi #可变数据类型,赋值变量是独立的 class Test: name = ["ted"] def __init__(self, x): self.x = x a = Test(10) b = Test(100) a.name = "peiqi" print(Test.name) #["ted"] print(a.name) #"peiqi" print(b.name) #["ted"]
class Person: money = 0 def work(self): Person.money += 100 mother = Person() father = Person() mother.work() father.work() print(Person.money) #200
000
标签:改变 hide 变量 bit print 参数 ict 处理 display
原文地址:https://www.cnblogs.com/believepd/p/9643471.html