guxh的python笔记六:类的属性】的更多相关文章

1,私有属性 class Foo: def __init__(self, x): self.x = x 类的属性在实例化之后是可以更改的: f = Foo(1) print(f.x) # 1 f.x = 2 print(f.x) # 2 如果想禁止访问属性,即让属性私有,可以用“双下划线” 或者“单下划线”: class Foo: def __init__(self, x, y): self._x = x self.__y = y def __repr__(self): return 'f._x…
1,基本概念 1.1,数据类型 基本数据类型:字符串,数字,布尔等 引用数据类型:相对不可变(元组),可变(列表,字典,集合等) 基本数据类型存放实际值,引用数据类型存放对象的地址(即引用) ==:判断值是否相等 is:判断id是否相等,即内存地址,id()可以返回内存地址 1.2,序列类型 容器类型:list,tuple,collections.deque,存放引用,可嵌套 扁平序列:str,bytes,bytearray,memoryview,array.array,存放值,只包含原子数据…
Python 面向对象之 类与属性 今天接触了一下面向对象,发现面向对象和之前理解的简直就是天壤之别,在学Linux的时候,一切皆文件,现在学面向对象了,so,一切皆对象. 之前不是一直在学的用面向函数编程,用函数就可以搞定一切了,但是为啥要用面向对象?面向对象呢,大大的提高了程序的可扩展性,面对不停的需求改变的时候,面向对象的优越性就展现出来了,先从面向函数来向面向对象进行过度. 先举一个例子: # def dog(name,gender,type): # # 狗的动作 # def jiao(…
1,面向对象编程思想 类:一类具有相同属性的抽象 属性(静态属性):实例变量.类变量.私有属性 方法(动态属性):构造函数.析构函数(默认就有).函数.私有函数 对象/实例:类经过实例化后,就是对象/实例 封装 encapsulation:隐藏对象的属性和实现细节,仅对外公开接口 继承 inheritance:类派生子类 多态 polymorphism:一个接口,多种实现 举例: class Foo: # 类 t = 'd' # 类变量,所有实例共享 def __init__(self, x,…
1,函数作用域 这种情况可以顺利执行: total = 0 def run(): print(total) 这种情况会报错: total = 0 def run(): print(total) total = 1 这种情况也会报错: total = 0 def run(): total += 1 # 等效total = total + 1 原因是函数内部对total有定义后,解释器会认为total是局部变量,但是内部执行时,却发现total还没定义. 解决办法是将total声明为全局变量: to…
类和对象 类的构造方法 def __init__(): 1 class People: 2 def __init__(self,name): 3 self.name = name 注意:在构造方法中的变量不用再次声明,必须有self,创建类的对象是用= 类的私有成员 让方法或者类变为私有,只要在它的名字前加上双下划线 1 class People: 2 __name = 'laowang' 3 def getname(self): 4 return self.__name 注意:类的私有成员可以…
1.类 1.1 类的定义 # 类的定义 class 类名: pass # pass是空语句,不具有任何意义,仅为了保持程序结构完整性 # 创建对象 对象名 = 类名() 1.2 成员变量 # 成员变量用于描述对象的固有状态或属性. # 成员变量定义语法 class 类名: def __init__(self): # 公有属性 self.变量名1 = 值1 self.变量名2 = None 对象名.变量名 = 值 # 独有属性 class Person: def __init__(self): s…
 1,类的特殊方法  新建一个类,本章内容中的特殊方法如果不创建类或新增方法,默认使用的就是下面的类: class Foo: """this is Foo""" typecode = 'd' def __init__(self, x): self.x = x def run(self): return self.x f = Foo(1) __doc__:类的描述信息 print(f.__doc__) # this is Foo __module_…
1,鸭子类型和白鹅类型 1.1,白鹅类型 白鹅类型对接口有明确定义,比如不可变序列(Sequence),需要实现__contains__,__iter__,__len__,__getitem__,__reversed__,index,count. 对于其中的抽象方法,子类在继承时必须具体化,其余非抽象方法在继承时可以自动获得,Sequence序列必须具体化的抽象方法是__len__和__getitem__. from collections import abc class Foo(abc.Se…
一.实例属性 Python是动态语言,根据类创建的实例可以任意绑定属性. >>> class Student(object): ... def __init__(self, name): ... self.name = name # 每个实例必须的属性 ... >>> s = Student('Jack') >>> s.score = 90 # 任意绑定属性 >>> s.name 'Jack' >>> s.score…