Python【day7】:Python学习(面向对象进阶、反射、socket介绍)

面向对象进阶

1、类变量和实例变量

# 一、变量
# 变量包括:实例变量和类变量,
# 他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同,
# 实例变量属于对象
# 类变量属于类

class Province(object):
    country = "中国" #类变量
    def __init__(self, name):
        self.name = name # 实例变量

# 直接访问实例变量(实例名来调用)
obj = Province(‘河北省‘)
print(obj.name) #河北省

# 直接访问类变量(类名来调用)
print(Province.country) #中国

# 由上述代码可以看出【实例变量需要通过对象来访问】【类变量通过类访问】,
# 在使用上可以看出类变量和实例变量的归属是不同的。
# 类变量在内存中只保存一份
# 实例变量在每个对象中都要保存一份
# 类变量应用场景: 通过类创建对象时,如果每个对象都具有相同的字段,那么就使用类字段

时间: 2024-08-03 18:46:20

Python【day7】:Python学习(面向对象进阶、反射、socket介绍)的相关文章

python全栈学习--面向对象进阶3

复习: #反射 必须会,必须能看的懂,必须知道在哪儿用 #hasattr  getattr setattr delattr 内置方法 必须能看懂 能用尽量用 __len__len(obj)的结果依赖于obj.__len()__的结果,计算对象的长度 __hash__ hash(obj)的结果依赖于obj.__hash__()的结果,结算对象的hash值 __eq__ obj1 == obj2 的结果依赖于obj.__eq__()的结果,用来判断相等 __str__ str(obj) print(

python(24)- 面向对象进阶

面向对象基础知识: 1.面向对象是一种编程方式,此编程方式的实现是基于对类和对象的使用: 2.类是一个模板,模板中包装了多个‘函数’供使用(可以将多函数中公用的变量封装到对象中): 3.对象,根据模板创建的实例(即:对象),实例用于被包装在类中的函数: 4.面向对象三大特性:封装.继承和多态. 面向对象进阶篇详细介绍python类的成员.成员修饰符和类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存

Python面向对象进阶和socket网络编程-day08

写在前面 上课第八天,打卡: 为什么坚持?想一想当初: 一.面向对象进阶 - 1.反射补充 - 通过字符串去操作一个对象的属性,称之为反射: - 示例1: class Chinese: def __init__(self,name): self.name=name p = Chinese('standby') # 实例化一个对象 print(p) # 打印这个对象 --- <__main__.Chinese object at 0x0000000000B3A978> - 示例2: >&g

Python之面向对象进阶------反射(Day26)

一 classmethod class Classmethod_Demo(): role = 'dog' @classmethod def func(cls): print(cls.role) Classmethod_Demo.func() staticmethod class Staticmethod_Demo(): role = 'dog' @staticmethod def func(): print("当普通方法用") Staticmethod_Demo.func() clas

python 3.x 学习笔记12 (反射 and 异常)

1.反射通过字符串映射或修改程序运行时的状态.属性.方法 getattr(obj,name_str):  根据字符串name_str去获取obj对象里的对应的方法的内存地址 hasttr(obj,name_str):    判断一个对象obj里是否有对应的字符串的方法 setattr(obj,'y',z):              setattr 函数对应函数 getatt(),用于设置属性值,该属性必须存在. delattr(obj,'y'):                 从给定的对象中

Python全栈开发——面向对象进阶(一切皆对象)

1.isinstance(obj,cls)            检查obj是否是类cls的对象,issubclass(sub,super)          检查sub是否是super的子类 #isinstance(obj,cls) 检查obj是否是类cls的对象 class Foo: pass f=Foo() print(isinstance(f,Foo)) #True #issubclass(sub,super) 检查sub是否是super的子类 class Bar(Foo): pass

Python-Day7 面向对象进阶/异常处理/Socket

一.面向对象高级语法部分 1.静态方法     通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法. class Dog(object): def __init__(self,name): self

第七天 面向对象进阶与socket编程

1.静态方法(用得少)(解除某个函数跟类的关联,加了静态方法后,类便不能将类的参数传给静态方法函数了) class Dog(object): def __init__(self,name): @staticmethod #下边的函数就是静态方法,但是下边的eat函数跟Dog类没有关联了,只是调用eat的时候,需要实例化Dog类再调用,eat不能再调用Dog类的任何参数和函数了 def eat(self,food): print("%s is eating %s " %(self.nam

python面向对象进阶版

面向对象基础知识: 1.面向对象是一种编程方式,此编程方式的实现是基于对类和对象的使用: 2.类是一个模板,模板中包装了多个'函数'供使用(可以将多函数中公用的变量封装到对象中): 3.对象,根据模板创建的实例(即:对象),实例用于被包装在类中的函数: 4.面向对象三大特性:封装.继承和多态. 面向对象进阶篇详细介绍python类的成员.成员修饰符和类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存