python的全局变量(属性的用法),私有属性,计算对象引用数
2017-07-10 18:09
603 查看
python的属性可以实现C#的全局变量的功能
把一个对象添加到另一个对象的属性中去
类的继承:
#encoding=utf-8 class Student: def __init__(self,name,age): self.name=name; self.age=age; self.hobby=[] #这里属性用一个列表表示,用来添加爱好 print('creat a student') def __str__(self):#跟init方法一样,自动调用 return ('%s的年龄是%d,爱好是%s'%(self.name,self.age,str(self.hobby)))#这里加个str一定打印的是字符串 def sayHello(): print('hello world') def addAge(self,addedAge): print("%s age is %d"%(self.name,self.age)) def addAgeAgain(self,addedAge): self.age+=addedAge; print("%s age is %d"%(self.name,self.age)) def addHabby(self,habby): self.hobby.append(habby) #这样是按照上面addAge()进行计算的,得出的age没有发生变化,是不对的 #tom age is 9 #tom age is 9 tom=Student('tom',9) #creat a student tom.addAge(1)#长大了1岁 tom.addAge(2)#长大了两岁 print(tom) #当没有__str__时,异常,定义了__str__ 返回:tom的年龄是9 #1 创建一个对象2 python自动的调用__init__方法,把对象自动引用 3 放回创建对象的引用给tom tim=Student('tim',9) tim.addAgeAgain(1) tim.addAgeAgain(2) tim.addHabby("run") tim.addHabby('football') print(tim) #tim的年龄是12,爱好是['run', 'football'] #显示 tim age is 10 #tim age is 12 #tim的年龄是12
把一个对象添加到另一个对象的属性中去
#encoding=utf-8 #对象之间的引用 class Student(): def __init__(self,name,age): self.name=name self.age=age print("hello") def setAge(self,age): if(age>10): return self.age def getName(self):#通过这个隐藏属性,可以对属性进行限定 return self.name def getAge(self):#公有方法 return self.age def __test(self): print("这是一个私有方法") def __del__(self): print("当对象被删除的时候执行") #比如stu,stud都指向对象,指向对象的两个都被删除后,才会执行这个del def test(self,value): if(value>0): self.__test()#这里可以调用私有方法 class book(object): """docstring for book""" def __init__(self, book_name): self.name=book_name stu=Student('kemi',9) stu.test(8) import sys #引入模块 num=sys.getrefcount(stu)#返回对象的引入数 print(num) #2 getrefcount中有个对象指向它 stud=stu #stu 和stud都指向一个对象 print(sys.getrefcount(stu)) #3 del stu #并没有将这个student('kemi',9)删掉 #stu.__test():#这样调用时错误的,不可以调用私有方法 #隐藏属性 del stud #有这句话,则运行后立刻进行删除对象,__del__,因为没有别的对象指向它 #若没有这句话,则运行后等到整个程序结束,内存被回收,执行__del__ ##因为如果在程序结束时,有些对象还存在,那么python解释器会自动调用它的__del__方法来完成清理工作
类的继承:
#encoding=utf-8 class Animal: def __init__(self): self.num=100 self._name=200 def eat(self): print("Can eat something") def __test(self): print("Have a test") def testDog(self): self.__test( ) #继承私有方法,这里的test()里面不能加self print(self._name) class Dog(Animal):#这里表示继承Animal def bark(self): print("The dog can bark") class HuangDog(Dog):#继承可以是多层继承 def bark(self):#这个方法先在自己类中查找方法,找不到在再去父类中寻找 print("the HuangDog can bark") #第一种调用被重写的父类的方法 Dog.bark(self)#调用父类的方法,self必须要用 #第二种 super().bark() ''' def testDog(self): self.__test() #继承私有方法不可以实现 print(self._name) ''' def Color(self): print("the color of the huangdog is yellow") dog=Dog() dog.eat() hd=HuangDog() hd.eat() hd.bark() dog.testDog() #私有方法和 私有属性不会被继承
相关文章推荐
- python的全局变量(属性的用法),私有属性,计算对象引用数
- python对象、引用、全局变量和局部变量的关系
- python中类的用法(对象的私有属性)
- php引用(&)变量引用,函数引用,对象引用和参数引用用法详解
- Python笔记(2):多参数,全局变量与局部变量,层状作用域,函数式编程,面向对象
- 对python变量和对象引用的探讨
- LabVIEW中局部变量、全局变量和引用及属性节点的相关
- 关于static函数的用法和全局变量在工程中的引用
- 跟老齐学Python之深入变量和引用对象
- js delete 用法(删除对象属性及变量)
- python类创建对象的公有属性和私有属性
- 在 JavaScript 核心语言中,全局对象的预定义属性都是不可枚举的,所有可以用 for/in 循环列出所有隐式或显式声明的全局变量
- Python全局变量在模块之间引用的问题
- Python 变量 对象 引用
- 打印出python 当前全局变量和入口参数的所有属性
- python中全局变量的用法
- python函数参数是值传递还是引用传递(以及变量间复制后是否保持一致):取决于对象内容可变不可变
- ajax 异步调用把返回值赋给一个全局变量的用法,最主要的就是把async属性改为 false,
- python通过函数属性实现全局变量的方法
- python中的全局变量用法分析