# class phone:
# ‘‘‘
# 限制,不允许添加属性
# ‘‘‘
# __slots__=["cpu"]
# def call(self,num):
# print("用cpu:%s打电话给%s"%(slef.cpu,num))
#print(phone.__dict__)
#iphone=phone()
#iphone.cpu="A11"
# print(iphone.cpu)
# iphone=phone()
# iphone.call("110")
‘‘‘
__new__才相当与c++的构造方法
__init__相当于初始化
前面有双下划线变成私有,并进行改名处理,不同的解释器改名方式不同
getter和setter:
通过内置方法对私有变量进行访问和设置,从而达到访问私有变量的目的
字符串设为None
单下划线是可以直接访问的,但是是约定俗称的私有变量,尽量不去用。
同理方法前面加上双下划线也就是私有方法,一个下划线也是
‘‘‘
class phone:
def __init__(self,name):
self.__name=name
self._cpu=None
def setname(self,name):
if len(name)>10:
print("名字不能超过10个字符")
return
self.__name=name
def getname(self):
return self.__name
def setcpu(self,cpu):
self._cpu=cpu
def getcpu(self):
return self._cpu
def __connect(self):
print("连接基站")
def _private(self):
print("可访问的私有方法")
iphone=phone("iphone")
#print(iphone._phone__name)
#这种方法能访问但不建议
#print("iphone.__dict__:",iphone.__dict__)
#print("phone.__dict__:",phone.__dict__)
# iphone.setname("apple")
# print(iphone.getname())
# iphone.setcpu("amd")
# print(iphone.getcpu())
iphone._private()