Python_实例属性的增删改查
class YoungMan: def __init__(self,name): self.name = name def play_ball(self,kind_of_ball): print("%s is playing %s" %(self.name,kind_of_ball)) man1 = YoungMan("James") man1.play_ball("basketball") print(man1.__dict__) #查属性 print(man1.name) print(man1.play_ball) #增加数据属性 man1.age =18 print(man1.__dict__) print(man1.age) #增加方法属性(证明能加,但是不会这样做,多余) def method_in_init(self): print("我是来自实例的方法属性,我是%s 实例" %self) #调用的是实例自己的方法,不是调用类的方法,所以不会自动传入self值(实例本身) man1.metho_in_init = method_in_init man1.metho_in_init(man1) print(man1.__dict__) #改 man1.name = "Mango" #删 del man1.age
#定义一个类,只当作一个 作用域去用,类似于c语言中的结构体 class MyData: pass x = 11 y = 22 MyData.x = 1 MyData.y = 2 print(x,y) print(MyData,x,MyData.y) print(MyData,x+MyData.y)
作用域
例子一:
class YoungMan: country = 'China' def __init__(self,name): self.name = name def play_ball(self,kind_of_ball): print("%s is playing %s" %(self.name,kind_of_ball)) man1 = YoungMan("James") print(man1.country) #相当于在__init__里增加了一个country属性,跟类的属性无关!!! man1.country = 'Japan' print(man1.country) print(YoungMan.country)
例子二:
country = "-------中国---------" class YoungMan: country = 'China' def __init__(self,name): self.name = name #可以正常输出,因为country就是一个普通的变量,局部没找到,就去全局找!!!假如是man1.country 或者 YoungMan.country才是属性!!! print("我是在__init__里 一个普通变量country......",country) def play_ball(self,kind_of_ball): print("%s is playing %s" %(self.name,kind_of_ball)) man1 = YoungMan("James") #相当于在__init__里增加了一个country属性,跟类的属性无关 man1.country = 'Japan' print("实例的country:",man1.country) print("类的country:",YoungMan.country)
例子三:
class YoungMan: list_list = ['a','b'] def __init__(self,name): self.name = name def play_ball(self,kind_of_ball): print("%s is playing %s" %(self.name,kind_of_ball)) man1 = YoungMan("James") #下面的代码是会在__init__单独加一个'c'呢,还是在类的list_list属性里加多一个'c'呢 man1.list_list.append('c')
print(YoungMan.list_list)