导航:首页 > 编程语言 > python类继承中的类变量

python类继承中的类变量

发布时间:2022-12-07 22:52:06

A. python里类变量和实例变量的区别

其实,从名字就能看出来,Python的类变量和实例变量的区别:
类变量:
是可在类的所有实例之间共享的值(也就是说,它们不是单独分配给每个实例的)。例如下例中,num_of_instance 就是类变量,用于跟踪存在着多少个Test 的实例。
实例变量:
实例化之后,每个实例单独拥有的变量。

[python] view plain
class Test(object):
num_of_instance = 0
def __init__(self, name):
self.name = name
Test.num_of_instance += 1

if __name__ == '__main__':
print Test.num_of_instance
t1 = Test('jack')
print Test.num_of_instance
t2 = Test('lucy')
print t1.name , t1.num_of_instance
print t2.name , t2.num_of_instance

B. Python中类的定义规是什么

类的概念:

类 Class: 用来描述具体相同的属性和方法的对象的集合。定义了该集合中每个对象所共有的属性和方法。对象是类的示例。


类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。


实例变量:定义在方法中的变量,只作用于当前实例的类。


数据成员:类变量或者实例变量用于处理类及其实例对象的相关数据。


方法:类中定义的函数。在类内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。


构造函数:即__init()__,特殊的方法,在对象创建的时候被自动调用。


析构函数:即__del()__,特殊的方法,在对象被销毁时被自动调用。


实例化:创建一个类的实例,类的具体对象。就是将创建的类赋值给另一个变量。理解为赋值即可,a = class(),这个过程,就叫做实例化


对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。


继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟”是一个(is-a)”关系(例图,Dog是一个Animal)。


方法重写:如果从父类继承的方法不能满足子类的需求,可以对其 进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

————————————————

原文链接:https://blog.csdn.net/f156207495/article/details/81166252

网页链接

C. Python中的类变量、实例变量、局部变量

类体内,所有函数外定义。
所有实例对象共享。
只有通过类名调用时才能修改,通过实例调用时无法修改。

假设某类变量名为“name",如果用该类的某个实例x来为name赋值:x.name = 'xxx',实质是为该实例新定义了一个变量name。且之后无法再通过该实例调用类变量name了。因为使用实例调用某名为“xxx”变量时,若该实例没有名为“xxx”的实例变量,则会去调用名为“xxx”的类变量;若有该名称的实例变量,则该实例无法再直接调用该名称对应的类变量。因此也不推荐通过实例来调用类变量。

即:通过类实例修改类变量的值时,实际是在定义新的与类变量同名的实例变量。

类体内,某函数(一般是__ init __ ())内定义。 “self.变量名”
因为是属于某个具体实例的,因此不能通过类名访问。

如果不在__ init __ () 中调用(该函数会在创建实例时自动调用一次),则只有调用该实例中定义目标实例变量的那个函数后,才能使用目标实例变量。因此最好在__ init __ () 中定义实例变量。

类体内,某函数内定义。
直接在函数内用“变量名=值”的方式进行定义。
函数执行完毕后,该局部变量即被销毁。

D. python中函数变量作用域和类变量作用域怎么搞都错,烦躁中

python中,变量的作用域要弄清楚。只有mole、class、def、lambda才会引入作用域,其他的代码块是不会引入作用域的。
1
图一中,你在函数中声明了d为全局变量,但这样是无效的,程序运行结果,已经说明这一点。

global这个关键字,是用来“在函数中修改全局变量值”的声明,而不是“在局部函数中定义一个全局变量”的声明。这里要注意一下。
你可以再局部函数外面声明变量d,再加上你原先的函数,就可以修改、访问这个变量了。

2
在类中函数的变量,作用域只在函数中。图二中,jian这个变量分别在yu(),yu1()两个函数中,是处于不同的定义域中的,是不能相互访问的。
所以,在各自函数中,只有先定义了jian变量,才能再使用。
如果想在yu1()中访问yu()中的jian变量,就需要将jian变量变成全局变量,即在class中定义一个全局变量jian,这样yu1(),yu()函数都可以访问了

E. Python类和实例变量的理解与运用

9.3.5. 类和实例变量
一般来说,实例变量用于对每一个实例都是唯一的数据,类变量用于类的所有实例共享的属性和方法:
class Dog:
kind = 'canine' # class variable shared by all instances
def __init__(self, name):
self.name = name # instance variable unique to each instance
>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.kind # shared by all dogs
'canine'
>>> e.kind # shared by all dogs
'canine'
>>> d.name # unique to d
'Fido'
>>> e.name # unique to e
'Buddy'
正如在 术语相关 讨论的, 可变 对象,例如列表和字典,的共享数据可能带来意外的效果。例如,下面代码中的 tricks 列表不应该用作类变量,因为所有的 Dog 实例将共享同一个列表:
class Dog:
tricks = [] # mistaken use of a class variable
def __init__(self, name):
self.name = name
def add_trick(self, trick):
self.tricks.append(trick)
>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.add_trick('roll over')
>>> e.add_trick('play dead')
>>> d.tricks # unexpectedly shared by all dogs
['roll over', 'play dead']
这个类的正确设计应该使用一个实例变量:
class Dog:
def __init__(self, name):
self.name = name
self.tricks = [] # creates a new empty list for each dog
def add_trick(self, trick):
self.tricks.append(trick)
>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.add_trick('roll over')
>>> e.add_trick('play dead')
>>> d.tricks
['roll over']
>>> e.tricks
['play dead']
总结后的知识点希望能帮到你

F. Python类里的类变量和实例对象变量的区别

类变量也叫静态变量,也就是在变量前加了static
的变量;
实例变量也叫对象变量,即没加static
的变量;
区别在于:
类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;
例:
public
class
A{
static
int
a
=
0;
//类变量
private
int
b
=
0;
//实力变量
}
public
class
B{
public
void
main
(String[]
args){
A
a1
=
new
A();
A
a2
=
new
A();
a1.a
=
3;
//
等同于
A.a
=
3;
a1.b
=
4
;
System.out.println(a2.a);
//结果为3
//类变量是针对所有对象的,所以a1改变a,a2的a也改变
System.out.println(a2.b);
//结果为0
//实例只改变自身的,所以a1对象的b改变,不影响对象a2的b变量
}
}

G. Python类的继承与多态详细介绍

类(Class): 用来描述具有相同的属性和方法的对象的集合。

类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用

self:self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类。

类调用 Car.weight

实例化 car01=Car(5)

实例对象调用 car01.weght

我们在构造类时,Python3默认我们继承了object这个基类,我个人理解object就是个空的类,可以不用管为何要在括号中写上object,这是Python3的特性,在python2中如果你没有写object的话不会默认继承了object这个基类。

同样的我们自己希望继承的父类只需要把objetc改为我们自己定义的类名即可。子类中可以拥有父类中所有的公有属性和方法,但是可以通过在变量名前加下划线使其变为私有,这样子类就不可以访问父类中的成员了。

以下三个公交车类的父类均为客车类,我们可以写一个funcs方法使得每次调用funcs方法时,传入不同的对象以执行不同的func方法,具体实现如下:

主函数

可以看到,我将小 汽车 实例化为带有重量为5t的一个具体对象,将客车实例化为带有重量为20t的一个具体对象,将三个公交车实例化为带有重量为15t的一个具体对象.

如上图所示,我每次在调用funcs方法时都传入了一个实例化对象,funcs根据不同的对象执行相应的内部方法。

H. python 类中的变量传递给类中的函数

为了把类中的变量传递给类中的函数,我们需要用到3个特定格式



① 第一个格式 @classmethod 的中文意思就是“类方法”,@classmethod声明了函数1是类方法,这样才能允许函数1使用类属性中的数据。

 ② 第二个格式 cls 的意思是class的缩写。如果类方法函数1想使用类属性(也就是类中的变量),就要写上cls为函数1的第一个参数,也就是把这个类作为参数传给自己,这样就能被允许使用类中的数据。

 ③ 第三个格式是 cls.变量 。类方法想使用类属性的时候,需要在这些变量名称前加上cls. 这就好比类方法和类之间的约法三章,所以但凡有任何格式错误都会报错。

如果缺①,即缺了“@classmethod”,类方法就不能直接利用类中的属性,于是报错

I. python中类的继承以及父类中的变量继承是如何使用的

你必须在Equilateral的__init__方法中显式调用父类Triangle的__init__方法。

J. 对python 中class与变量的使用方法详解

python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键。

枚举了各种情况,没有办法全部枚举,但大部分情况应该都已经包含了。

1. 类变量:能够通过类名或者object的self来访问到,在类的内部和外部均可达,比如class_var_1

2. 对象变量:可以通过对象的self来使用的变量,通过constructor一路走向去的的self初次被赋值的变量都会成为对象变量,比如object_var_1, object_var_2, object_var_3, object_var_4

3. 内部变量:可以在函数中定义,并加上self前缀,在初次调用过定义的函数后,就可以在后面的对象的函数中被使用,比如internal_var_1

4. 局部变量:在函数内部定义,并使用的变量,在使用完之后就会被回收对类及object不可见

5. 全局变量:定义在类或者函数外部,作用域在变量被定义之后的任意代码段,比如:global_var_1

阅读全文

与python类继承中的类变量相关的资料

热点内容
基于单片机的遥控器设计 浏览:517
安卓如何取消圆图标 浏览:11
收件服务器怎么样 浏览:48
建筑设计规范pdf 浏览:98
如何合并两个pdf 浏览:174
刷机包必须要解压的单词 浏览:483
android课表实现 浏览:864
头条app在哪里能看见有什么活动 浏览:511
冰柜压缩机电容80欧 浏览:609
安卓各个版本图标什么样 浏览:152
无锡哪里有制作手机app 浏览:538
php字符串转json数组 浏览:6
数控网络编程课程有哪些 浏览:482
python30特效程序编码 浏览:392
安卓跟苹果互传照片用什么 浏览:848
原创小说app哪个好看 浏览:97
首台湖南造鲲鹏服务器云服务器 浏览:268
redhatphp 浏览:456
android智能家居蓝牙 浏览:646
pt螺纹编程 浏览:451