标签:info 内存 dog code bubuko com isp other 技术
1,对象的交互
人和狗大战之交互
class Person: role = ‘person‘ def __init__(self,name,sex,hp,ad): self.name= name self.sex = sex self.hp = hp self.ad = ad def attack(self,dog): print(‘%s攻击了%s,%s掉了%s滴血‘%(self.name,dog.name,dog.name,self.ad)) dog.hp -= self.ad class Dog: def __init__(self,name,kind,hp,ad): self.name = name self.kind = kind self.hp = hp self.ad = ad def bite(self,person): print(‘%s咬了%s,%s掉了%s点血‘%(self.name,person.name,person.name,self.ad)) person.hp -= self.ad alex = Person(‘sb‘,‘male‘,45,35) boss_jin = Person(‘金老板‘,‘male‘,34,45) teddy = Dog(‘小虎‘,‘teddy‘,45,50) alex.attack(teddy) print(teddy.hp) teddy.bite(boss_jin) print(boss_jin.hp)
2,命名空间作用域
对象的内存空间中,只存储对象的属性,而不存储方法和静态属性。对象能找类。
方法和静态属性都存储在类的内存空间中,为了节省内存,让多个对象去共享类中的资源。
class Person: role = ‘person‘ def __init__(self,name,sex,hp,ad): self.name = name self.sex = sex self.hp = hp self.ad = ad self.hobby = ‘girl‘#在自己的对象空间加载 def attack(self): print(‘%s发起一次攻击‘%self.name) alex = Person(‘sb‘, ‘male‘,44,44) boss_jin = Person(‘金老板‘,‘amle‘,60,63) alex.attack() alex.role = ‘dog‘#在自己的对象空间加载alex.role = ‘dog‘ print(alex.__dict__) print(boss_jin.role)#person print(Person.role)#可以看见静态变量并没有改变 perso
加载顺序:1,类的内存空间,静态变量,方法。2,对象的内存空间,类对象指针,通过类对象指针找到类。
1,静态属性和方法是共存的。对象的属性是对立的。2,对象使用名字,先找自己的内存空间,再找类的内存空间。
对于静态属性的修改,应该使用类名直接修改。调用静态变量:类名.静态变量。
class Person: money = 0 def __init__(self,name): self.name = name def work(self): print(self.name,‘工作赚了1000元钱‘) self.money += 1000 father = Person(‘father‘) mother = Person(‘mother‘) father.work() mother.work() print(Person.money)#静态变量并没有改变 # father 工作赚了1000元钱 # mother 工作赚了1000元钱 # 0
class Person: money = [0] def __init__(self,name): self.name = name def work(self): print(self.name,‘工作赚了1000元钱‘) self.money[0] += 1000 father = Person(‘father‘) mother = Person(‘mother‘) father.work()
mother.work() print(Person.money)#2000
class Person: money = [0] def __init__(self,name): self.name = name def work(self): print(self.name,‘工作赚了1000元钱‘) self.money = [Person.money[0] + 1000] father = Person(‘father‘) mother = Person(‘mother‘) father.work() mother.work() print(Person.money)#0
写一个类统计有几个对象
class Foo: count = 0 def __init__(self): Foo.count += 1 f1 = Foo() f2 = Foo() f3 = Foo() f4 = Foo() f5 = Foo() print(Foo.coun
程序的解耦:
1,当计算的规模足够大的时候,我们应该在编码的过程中,让操作尽量原子化。
2,尽量用返回值代替print.
求 几个圆的面积(1,3,5,7,9)
from math import pi class Area: def __init__(self,r): self.r = r def circle(self): return pi*self.r*2 def perimeter(self): return pi*self.r**2 for i in range(1,10,2): ci = Area(i) print(ci.circle()) print(ci.perimeter())
练一练
小明,10岁,男,上山去砍柴 小明,10岁,男,开车去东北 小明,10岁,男,最爱大保健 老李,90岁,男,上山去砍柴 老李,90岁,男,开车去东北 老李,90岁,男,最爱大保健 老张…
标签:info 内存 dog code bubuko com isp other 技术
原文地址:https://www.cnblogs.com/yzxing/p/8796806.html