python 类的创建以及属性的使用
测试是否可以直接访问类中的属性
class Test(object):
def __init__(self,name1,name2,name3):
self._name1 = name1
self._name2 = name2
self._name3 = name3
def get_name1(self):
return self._name1
def set_name1(self,name1_changed):
self._name1 = name1_changed
print("name1 has been set again!")
@property
def name2(self):
return self._name2
@name2.setter
def name2(self,name2):
self._name2 = name2
print("name2 has been set again!")
测试是否可以直接修改类中的属性
class Test(object):
def __init__(self,name1,name2,name3):
self._name1 = name1
self._name2 = name2
self._name3 = name3
def get_name1(self):
return self._name1
def set_name1(self,name1_changed):
self._name1 = name1_changed
print("name1 has been set again!")
@property
def name2(self):
return self._name2
@name2.setter
def name2(self,name2):
self._name2 = name2
print("name2 has been set again!")
测试是否可以定义函数来获取以及修改类中的属性
测试是否可以用@property以及@name2.setter
class Test(object):
def __init__(self,name1,name2,name3):
self._name1 = name1
self._name2 = name2
self._name3 = name3
def get_name1(self):
return self._name1
def set_name1(self,name1_changed):
self._name1 = name1_changed
print("name1 has been set again!")
@property
def name2(self):
return self._name2
@name2.setter
def name2(self,name2):
self._name2 = name2
print("name2 has been set again!")
class Test(object):
def __init__(self,name1,name2,name3):
self._name1 = name1
self._name2 = name2
self._name3 = name3
def get_name1(self):
return self._name1
def set_name1(self,name1_changed):
self._name1 = name1_changed
print("name1 has been set again!")
@property
def name2(self):
return self._name2
@name2.setter
def name2(self,name2):
self._name2 = name2
#print("name2 has been set again!")
class Test(object):
def __init__(self,name1,name2,name3):
self._name1 = name1
self._name2 = name2
self._name3 = name3
def get_name1(self):
return self._name1
def set_name1(self,name1_changed):
self._name1 = name1_changed
print("name1 has been set again!")
@property
def name2(self):
return self._name2
@name2.setter
def name2(self,name2):
self._name2 = name2
print("name2 has been set again!")#************************
class Test(object):
def __init__(self,name1,name2,name3):
self._name1 = name1
self._name2 = name2
self._name3 = name3
def get_name1(self):
return self._name1
def set_name1(self,name1_changed):
self._name1 = name1_changed
print("name1 has been set again!")
@property
def name2(self):
return self._name2
# @name2.setter
@setter #从**************************************
def name2(self,name2):
self._name2 = name2
print("name2 has been set again!")
class Test(object):
def __init__(self,name1,name2,name3):
self._name1 = name1
self._name2 = name2
self._name3 = name3
def get_name1(self):
return self._name1
def set_name1(self,name1_changed):
self._name1 = name1_changed
print("name1 has been set again!")
@property # ***********************第一对
def name2(self):
return self._name2
@name2.setter
def name2(self,name2):
self._name2 = name2
print("name2 has been set again!")
@property # *******************************第二对
def name3(self):
return self._name3
@name3.setter
def name3(self,name3):
self._name3 = name3
print("hahahahaha")
综上所述,
可以得到
1.@property 与@函数名.settter 是一对,@函数名.setter不能只写@setter
2.用了@函数名.setter后,不是用 test.name2(‘name2_changed’)来使用
而是 test.name2 = ‘name2_changed’
3. @name2.setter 设置的函数,可以在里面不单单是只改类的属性,还可以有其他的东西
4. 在类的属性设置是最好带有 _,因为:
5.一个类中可以定义多对@property+ @函数名setting