类属性

通俗讲解让你秒懂Python里的面向对象继承

我的未来我决定 提交于 2020-04-06 16:41:22
面向对象编程 (OOP),英语全称:Object Oriented Programming,面向对象编程的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 继承,其实这样理解,就是我写了一个爸爸类和儿子类,爸爸有钱,儿子却没钱,于是儿子决定继承爸爸,调用爸爸的钱(爸爸类的变量和方法)。 继承一个类,基本使用下面的五个方法。 1、直接调用父类属性方法 爸爸有钱,儿子却没钱,于是儿子用爸爸的钱 class Father(): def __init__(self): self.money= 1000 def action(self): print('调用父类的方法') class Son(Father): pass son=Son() # 子类Son 继承父类Father的所有属性和方法 son.action() # 调用父类属性 输出:调用父类的方法 son.money # 调用父类属性 输出:1000 2、强制调用父类私有属性方法 爸爸说,你这个儿子,老是用我的钱,我决定藏私房钱。儿子试试super()拿你的私房钱,但是这里需要注意super()强制调用父类私有属性方法,就是重写方法,私有变量是不能用supper继承不了,还不可以访问父类中的私有属性方法的变量,就是儿子是拿不了私房钱的。 class

ORM基础概念

跟風遠走 提交于 2020-04-02 14:03:22
GPS平台、网站建设、软件开发、系统运维,找森大网络科技! http://cnsendnet.taobao.com 来自森大科技官方博客 http://www.cnsendblog.com/index.php/?p=481 ORM(O/R Mappping对象关系映射)的基础概念 在我们的系统中,存在大量的需要进行持久化存储的对象,这些对象可能是各种各样的业务单据,也可能是我们的系统配置信息等。另外一些属于内存中使用而不需要进行持久化存储的对象,不属于我们的讨论范围。而在支持对象序列化的语言比如C#,Java中,我们可以将这些对象序列化到磁盘文件或者直接保存到关系数据库中。其中关系数据库是我们最主要也是最安全的选择。 在对数据库中的业务数据进行各种操作的时候我们发现,我们进行的大量的Insert、Update、Delete操作,除了其SQL语句根据不同的对象有不同的变换之外,其主要流程存在很多相似之处。于是人们就想通过一个东西来实现这些相同部分的操作的自动化,而那些不同的流程,操作再做特殊处理。这样我们就可以把主要的精力都集中在那些个性化的,特殊的流程操作上。这就是ORM产生的根本原因。 在Java的世界里,ORM框架的应用比较早,也比较成熟,比如Hibernate等,而在.NET世界里,起步就相对晚的多。但是由于担心使用开源的ORM框架导致项目更为复杂(因为这些开源工具虽然很好

类(二)的静态属性、类的方法、静态方法

冷暖自知 提交于 2020-03-30 02:00:44
一.类的静态属性 即是将类的函数属性,封装成类似数据属性。比如:类方法函数的返回值获取。通过:@proporty class Who(object): what = 'what' # brother = 'jack' def __init__(self,name,age,gender): self.name = name self.age = age self.gender =gender def information(self): print(self.name,self.age,self.gender) return self.name ##将函数增加一个返回值 p1 = Who('张三',18,'男') p1.information() ##实例化调用类的函数,有(),因为类的属性字典中存储的是函数的内存地址,调用需要加() print(Who.information) ##<function Who.information at 0x000002985CFFAA60> 运行结果:张三 18 男 ()+无返回值 :静态属性可以省去(),也可以获得返回值。 ##静态属性 class Who(object): what = 'what' # brother = 'jack' def __init__(self,name,age,gender): self.name = name

史上最全的Python面向对象知识点疏理

♀尐吖头ヾ 提交于 2020-03-27 17:19:03
python 面向对象技术简介 类: 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖,也称为方法的重写。 实例变量:定义在方法中的变量,只作用于当前实例的类。 另外要注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你缺新项目练习或者没有python精讲教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新教程项目,还可以跟老司机交流讨教! 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。 创建类 a 变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用 P 访问。 第一种方法__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法 self 代表类的实例,self 在定义类的方法时是必须有的

10,类对象

丶灬走出姿态 提交于 2020-03-26 17:30:21
3 月,跳不动了?>>> 类对象 定义 类(Class)是设计蓝图(或模型),用来创建不同类型的对象 Python内置有数字、字符串、列表、字典等对象,这些内置对象有已经规定好的属性和方法 若需要创建新的对象类型,则需要使用类 类是一种数据结构,可以用来定义对象,将数据值和行为特征融合在一起 类指定了对象将包含哪些数据和函数,数据一般是变量即对应值,函数一般我们称之为方法 功能 对事务进行高度抽象 类是对事务的抽象 提高代码重用率 通过子类和超类,实现类的(多重)继承 提高程序层次性 类支持继承 语法 class ClassName : 定义类的名称 class ClassName(object) : ‘class documentation string' 类文档字符串 class_suite 类体(内容) 数据属性 方法属性 举例 >>> class Person: ... 'The Person Class' ... def __init__ (self, name, gender, age): 构造函数,用于给实例/对象初始化参数 类中第一个函数必须是self,代表实例/对象本身 ... self.name = name ... self.gender = gender ... self.age = age ... def print_gender(self): ...

python笔记二

一曲冷凌霜 提交于 2020-03-18 21:23:45
# 类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。 # 通过定义一个特殊的__init__方法,在创建实例的时候,就把属性绑上去 class Student(object): # 和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self # Python解释器自己会把实例变量传进去 def __init__(self, attr1, attr2): self.attr1 = attr1 self.attr2 = attr2 pass def get_attr(self): print(self.attr1) s = Student(111,222) s.get_attr() # 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__, # 在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问 class Student(object): def __init__(self, attr1, attr2): self.attr1 = attr1 self.__attr2 = attr2 pass s = Student(111,222) print(s.attr1) print(s.__attr2) #继承和多态

static修饰符

☆樱花仙子☆ 提交于 2020-03-18 19:29:49
static关键词:   用static声明的成员变量为静态成员变量,或者叫做:类属性,类变量。     它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显示初始化。     对于该类的所有对象来说,static成员变量只有一份,被该类的所有对象共享。     可以使用“对象.类属性”来调用,不过一般都是用“类名.类属性”。     static变量置于方法区中   用static声明的方法为静态方法。     不需要对象,就可以调用(类名.方法名)     在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。 ===================================================================== static的基本规则:   1.类中的静态方法不允许调用非静态的属性和方法,只可以调用静态的属性和方法   2.可以用类名直接调用静态类中的属性和方法   3.静态方法中不允许出现this和super   4.静态方法不能被非静态方法覆盖   5.构造方法不允许声明static   6.静态变量为类变量,可以直接调   7.非静态变量为实例变量,通过实例调用 来源: https://www.cnblogs.com/zhou-xian-sheng/p/12519378.html

Java 内存空间占用规则分析

跟風遠走 提交于 2020-03-17 01:29:40
某厂面试归来,发现自己落伍了!>>> 一个对象实例占用了多少字节,消耗了多少内存?这样的问题在c或c++里使用sizeof()方法就可以得到明确答案,在java里好像没有这样的方法(java一样可以实现),不过通过jmap工具倒是可以查看出一个对象的占用内存的大小,这里介绍一种通过分析java代码计算内存使用情况的方法。 注意,一下讨论的情况都是基于32位机,不适用用64位机,JVM是sun的HotSpot,不同的虚拟机实现可能会不同 规则一:每个对象被按照8bytes粒度对齐(数组除外) 在jvm中每个对象(数组除外)都有一个头,这个头有两个字,第一个字存储的时对象的一些标志位信息,例如:锁标志位、经历了几次gc等信息,第二个字是一个引用,指向了这个类的类信息。这里jvm给这两个字留了8个字节的空间(这个为啥用8个字节空间不是很清楚,一个字即两个字节,我一直认为4个字节就够了) 按规则一:new Object();这个Object实例就占用了8个字节 规则二:为类属性分配存储空间时不是按照类中定义的属性顺序,而是按如下的顺序: 1、double\long;----8bytes 2、int\float;----4bytes 3、char\short;----2bytes 4、boolean\byte;----1bytes 5、reference;----4bytes 例如:

类、继承、类属性、实例属性

你离开我真会死。 提交于 2020-03-05 22:11:20
1、定义 class Animal(): def __init__(self, __color, footNum, isCanSpeak): """ 动物属性 :param color: :param footNum: :param isCanSpeak: """ self.__color = __color self.footNum = footNum self.isCanSpeak = isCanSpeak self.isPersonFriend = True 2、继承 普通继承: class Dog(Animal): def __init__(self, __color, footNum, isCanSpeak, eyeNum): super().__init__(__color, footNum, isCanSpeak) 接口继承(子类必须包含父类所有的实现): class 接口类名(metaclass=abc.ABCMeta): isTest = True def __init__(self, school, money): self.school = school self.__money = money @abc.abstractmethod def hitStudent(self): pass 3、类的特殊属性 print(Dog.__name__) #Dog 类名

记录遇到的Python陷阱和注意点

一个人想着一个人 提交于 2020-03-05 13:24:02
最近使用Python的过程中遇到了一些坑,例如用 datetime.datetime.now() 这个可变对象作为函数的默认参数,模块循环依赖等等。 在此记录一下,方便以后查询和补充。 避免可变对象作为默认参数 在使用函数的过程中,经常会涉及默认参数。在Python中,当使用可变对象作为默认参数的时候,就可能产生非预期的结果。 下面看一个例子: def append_item(a = 1, b = []): b.append(a) print b append_item(a=1) append_item(a=3) append_item(a=5) 结果为: [1] [1, 3] [1, 3, 5] 从结果中可以看到,当后面两次调用 append_item 函数的时候,函数参数b并没有被初始化为 [] ,而是保持了前面函数调用的值。 之所以得到这个结果,是因为在Python中, 一个函数参数的默认值,仅仅在该函数定义的时候,被初始化一次 。 下面看一个例子证明Python的这个特性: class Test(object): def __init__(self): print("Init Test") def arg_init(a, b = Test()): print(a) arg_init(1) arg_init(3) arg_init(5) 结果为: Init Test 1 3