python-面向对象基础-类属性&实例属性-构造&析构

一、类的定义

'''
class 类名():
    类体
'''
class Person(object):
    pass

二、类中成员的定义:

class Person(object):
    
    #属性
    name = "tom"
    age = 18
    height = 180
    
    # 方法
    def eat(self,food):
        print(self.name + "eating" + food)

    def run(self):
        print(self.name + "runing")
'''
    类的定义包括成员变量(属性)定义、成员方法的定义
        成员变量: 定义同普通 变量相同都遵循标识符命名规范
        成员函数: 同普通函数定义基本相同,只是传参时候,第一个参数必须是该对象本身(一般是self 但是不是必须的,可以是其他合法的标识符 同 java 、c++ 中 this作用一样,表示当前对象)
'''

三、创建对象:

'''
变量名 = 类名()
说明:创建对象实际上就相当于定义了一个自定义的变量,()不能省略
'''
class Person(object):
    
    name = "tom"
    age = 18


p1 = Person() 
# 这里创建了一个Person的实例化对象,p1 为该对象的一个引用, 与普通变量定义相同            
num = 10 
# python 一切皆对象 10 也是一个对象 num 则是该对象的一个引用
'''
    说明: 定义变量(实例化对象) 实际上是在内存中开辟存储空间的过程,实际的对象存储在堆中,而该对象的引用存放在栈中
    
'''

四、类属性与实例属性

'''
类属性: 直接定义在类中,所有通过该类创建的对象都可以访问该属性、随着类出现而出现
实例属性: 只属于某一个对象,只有当前对象才能访问该属性,随着对象出现而出现
'''
class Person(object):
    
    # 类属性
    name = "tom"
    age = 18

    # 限制绑定
    __slots__ = ("name","age",)

    def __init__(self,name)
        # 实例属性 定义在构造函数中或者动态绑定
        self.name = name

p = Person("123")
# 对象属性动态绑定  只影响该对象
p.school = "北大"
# 类属性动态绑定    影响到类 实例化的所有对象
Person.school = "清华"
# 通过 __slots__ = 元祖  限制 只能动态绑定该元祖中的字段

'''
    关于类属性与实例属性的几点说明:
        1.实例属性: 对象.实例属性 类属性: 类名.类属性 或者  对象.类属性
        2.优先级不同:如果类属性 和实例属性重名,则通过对象访问,优先访问的是实例属性
        3.内存出现的时机不同: 类属性随着类的加载而出现,而实例属性随着对象的出现而出现
        4.使用场景不同:类属性用来定义多个对象共同的特征,实例属性用来定义每个对象特有的特征
'''

五、构造函数与析构函数

'''
构造函数:__init__()
调用时机:创建对象的时候,自动被调用
作用:构建对象,为对象的属性初始化
'''
class Person(object):

    def __init__(self,name,age):
        self.name = name;
        self.age = age

'''
析构函数:__del__()
调用时机:对象被销毁时候 自动被调用
作用:销毁对象
'''
class Person(object):

    def __del__(self):
        print("析构函数被执行了")

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值