python基本使用-python-类的基本使用

类的基本使用(引用小猿圈)

class Dog(): # 类以class开头,类的名字使用驼峰体命名。不加()为经典类,加()为新式类

d_type = "京巴" # 类的成员变量,类属性,类变量(属于每个实例共有的属性)

def __init__(self,name,age): # 初始化方法,实例化的时候会自动执行,会进行一些初始化工作

self.name = name # 将name与实例进行绑定,也就变成了私有属性

self.age = age

def say_hi(self): # 类方法,第一个参数是self,self代表类实例本身

print("hi,大家好我是一个{}".format(self.d_type))

# d = Dog() # 类的实例化

# d2 = Dog() # 类的实例化

d = Dog("mjj",12) # 类的实例化,实例化带有私有属性,这里的参数会直接传给__init__的方法中,这就是函数中参数的传递了

d2 = Dog(name="ccc",age=18)

print(d.name,d.age)

print(d2.name,d2.age)

print(d.d_type) # 类的实例化调用类属性

print(d2.d_type) # 类的实例化调用类属性

d.say_hi() # 使用类的实例化调用类方法

d2.say_hi() # 使用类的实例化调用类方法

print(id(d.d_type),id(d2.d_type))

类属性:属于公共属性,这个值是存在类的内存空间,(每个实例有自己的内存空间)

print(id(d.d_type),id(d2.d_type))

1572116-20200506231905124-1467397628.png

私有属性:存储在初始化方法中,通过self.xxx = xxx将属性与实例进行绑定,因为self代表实例本身的嘛

1572116-20200506231947965-464461518.png

类方法中调用私有属性,使用self.xxx

1572116-20200506232059447-1243106205.png

理解self是实例本身

看我使用d.say_hello(),并没有传递任何的参数,但是没有报错。我们知道函数如果有形参的话,就必须要传递实参与之相对应,是因为python自动给传递了一个参数d.say_hello()相当于d.say_hello(d),为了验证我们在方法里面打印这个self看看与实例d的id是否一样

class Dog(): # 类以class开头,类的名字使用驼峰体命名。不加()为经典类,加()为新式类

d_type = "京巴" # 类的成员变量,类属性,类变量(属于每个实例共有的属性)

def __init__(self,name,age): # 初始化方法,实例化的时候会自动执行,会进行一些初始化工作

self.name = name # 将name与实例进行绑定,也就变成了私有属性,把这两个值真正的存在实例里

self.age = age

def say_hello(self):

print("hello ,大家好,我是{},年龄是{}".format(self.name,self.age))

print("这里是类中say_hello()方法中的self的内存id:{}".format(id(self)))

d = Dog("mjj",12) # 类的实例化,实例化带有私有属性,这里的参数会直接传给__init__的方法中,这就是函数中参数的传递了

print("这个是实例化对象d的内存id:{}".format(id(d)))

d.say_hello()

-

1572116-20200506232139278-1513809072.png

那为什么python要自动给你传self,也就是实例本身呢?

是为了要在类中打通私有属性与方法之间的调用,他知道你要用,就给你用

在__init__中给你绑定上self,下面的say_hello(),再将self传递过来,这样你就可以使用了

理解类变量和私有属性之间的区别

![image-20200506230926158](/Users/mac/Library/Application Support/typora-user-images/image-20200506230926158.png)

image.png

附:代码

# -*- conding:utf-8 -*-

# @Time : 2020/5/6 21:49

# @Author : shanshan

# @File : 类的基本使用.py

class Dog(): # 类以class开头,类的名字使用驼峰体命名。不加()为经典类,加()为新式类

d_type = "京巴" # 类的成员变量,类属性,类变量(属于每个实例共有的属性)

def __init__(self, name, age): # 初始化方法,实例化的时候会自动执行,会进行一些初始化工作

self.name = name # 将name与实例进行绑定,也就变成了私有属性,把这两个值真正的存在实例里

self.age = age

def say_hi(self): # 类方法,第一个参数是self,self代表类实例本身

print("hi,大家好我是一个{}".format(self.d_type))

def say_hello(self):

print("hello ,大家好,我是{},年龄是{}".format(self.name, self.age))

print("这里是类中say_hello()方法中的self的内存id:{}".format(id(self)))

# d = Dog() # 类的实例化

# d2 = Dog() # 类的实例化

d = Dog("mjj", 12) # 类的实例化,实例化带有私有属性,这里的参数会直接传给__init__的方法中,这就是函数中参数的传递了

d2 = Dog(name="ccc", age=18)

print("这个是实例化对象d的内存id:{}".format(id(d)))

d.say_hello()

# d2.say_hello()

print(d.name, d.age)

print(d2.name, d2.age)

print(d.d_type) # 类的实例化调用类属性

print(d2.d_type) # 类的实例化调用类属性

d.say_hi() # 使用类的实例化调用类方法

d2.say_hi() # 使用类的实例化调用类方法

print(id(d.d_type), id(d2.d_type))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值