-
类属性和实例属性要是开头有“__”的时候,就是私有属性,类私有属性和实例私有属性,都不可以通过XXX.__类属性名(__实例属性名)来进行访问。
外部操作私有属性:通过定义类或者实例方法
查看全部 -
类属性和实例属性优先级(类属性和实例属性名字相同的情况下)
实例属性的优先级是要高于类属性的,在操作实例的时候,优先是操作实例的属性。
(也就是在实例的时候若是对类属性进行了修改那么在实例属性中访问的是修改后的值)
尽量不要通过实例来修改类属性,否则很容易引发意想不到的错误。
查看全部 -
定义类: class pesron(): class person: class person(object)查看全部
-
Python打开二进制文件
二进制文件:非文本文件,比如图片、压缩文件、视频文件、音乐文件等等
b:二进制模式,打开二进制文件
wb:以二进制格式只写模式打开一个文件,会清除原有的内容
ab:以二进制格式打开一个文件并追加内容,会往文件尾部添加内容
rb:以二进制格式只读模式打开一个文件
查看全部 -
使用a的打开方式打开文件,文件游标默认是在文件的尾部,因此,可以便捷的往文件尾部添加内容,除此以外,文件对象还提供seek()方法,可以移动文件的游标位置,它接受一个参数,表示文件的位置,0:文件首部,1:当前位置,2:文件尾部,通过seek()可以把文件游标移动到文件首部但不删除文件的内容。
查看全部 -
套接字Socket与套接字编程
服务端建立四个步骤:
新建socket、
绑定IP和端口(bind)、
监听连接(listen)、
接受连接(accept)。
客户端建立两个步骤:
新建socket、
连接服务端(connect)。
send()函数:发送数据
recv()函数:接收数据。
查看全部 -
isinstance()方法,判断一个对象是否是某个类型
type()函数,获得变量的类型
dir()方法,获取变量的所有属性
以下划线开头和结尾的,这些都是特殊的方法,称为内建方法
dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数
查看全部 -
a,b=b,a+b 相当于:
temp=b #先保存b的原值
b=a+b #赋b新值
a=temp #将b的原值赋予a
实际就是C语言中的数据交换过程,也可理解为先计算右边后赋值。需要注意的点
b = a + b
a = b
≠
a, b = b, a + b查看全部 -
如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数了。>>> getattr(p, 'name') # 获取name属性
'Alice'
>>> setattr(p, 'name', 'Adam') # 设置新的name属性
>>> s.name
'Adam'
>>> getattr(s, 'age') # 获取age属性,但是属性不存在,报错:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Person' object has no attribute 'age'
>>> getattr(s, 'age', 20) # 获取age属性,如果属性不存在,就返回默认值20:
20查看全部 -
和实例方法不同的是,这里有两点需要特别注意:
类方法需要使用@classmethod来标记为类方法,否则定义的还是实例方法
类方法的第一个参数将传入类本身,通常将参数名命名为 cls,上面的 cls.__localtion 实际上相当于Animal.__localtion。
例子:
class Animal(object):
__localtion = 'Asia'
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def set_localtion(cls, localtion):
cls.__localtion = localtion
@classmethod
def get_localtion(cls):
return cls.__localtion
print(Animal.get_localtion()) # ==> Asia
Animal.set_localtion('Afica')
print(Animal.get_localtion()) # ==> Africa查看全部 -
def set_name(self, name):方法就是为了修改私有属性的值。要是不用这个方法,也可以在get_name()中添加相应的代码也可以实现。def get_name(self, name): self.__name = name return self.__name但是,在实例化对象后调用的时候,就需要带上修改的参数,比如:cat = Animal()print(cat.get_name('mimi'))
查看全部 -
在类属性和实例属性同时存在的情况下,实例属性的优先级是要高于类属性的,在操作实例的时候,优先是操作实例的属性。
另外,当实例没有和类同名的时候,通过实例对象,依然可以访问到类属性。查看全部 -
并不是所有的属性都可以被外部访问的,这种不能被外部访问的属性称为私有属性。私有属性是以双下划线'__'开头的属性。
在外部访问私有属性将会抛出异常,提示没有这个属性。
虽然私有属性无法从外部访问,但是,从类的内部是可以访问的。私有属性是为了保护类或实例属性不被外部污染而设计的。查看全部 -
a, b = b, a + b 这句语句表示b的值赋给a,a+b的值赋给b
查看全部 -
def __init__
def后面要有空格
查看全部
举报