【python第7课 实例,类】

文章目录

  • 一、实例
    • 1.1实例的变量
    • 1.2实例方法
    • 1.3 构造方法
    • 1.4析构函数
    • 1.4预置实例属性:
  • 二,类
    • 1.1类变量
    • 1.2类方法
    • 1.3静态方法
    • 1.4类属性的增删改查

一、实例

1.1实例的变量

使用示例

class dog:
	def __init__(self,k,c,a):
	    self.kinds = k
	    self.color = c
	    self.age = a
d1 = dog("京巴","白色",1)
d2 = dog("金毛","黄色",2)
print(d1.kinds)
print(d1.color)

##z执行结果
京巴
白色

1.2实例方法

语法 :
class 类名(继承列表):
  def 实例方法名(self,形参参数1,形参参数2……):
   语句……
说明:
 实例方法的实质是函数,是定义在类内的函数
 实例方式属于类的属性
 实例方法的第一个参数代表调用这个实例方法的对象,一般命名为“self”
 实例方法如果没有return语句,则返回None
实例方法调用示例

class dog:
	def __init__(self,k,c,a):
	    self.kinds = k
	    self.color = c
	    self.age = a
	def say(self):
	    print("汪汪")
d1 = dog("京巴","白色",1)

#用对象来调用
d1.say()
#用类来调用
dog.say(d1)

#执行结果
汪汪
汪汪

1.3 构造方法

作用:
 创建对象时初始化实例对象
语法:
  def __init__(self, [形参参数列表]):
   语句……
说明:
  构造方法名必须为 __init__ 不可改变
  构造方法会在实例创建时自动调用,且将实例自身通过第一个参数self传入__init__方法

1.4析构函数

语句:
def __del__(self):
  pass
说明:
析构方法会在对象销毁时被自动调用
python不建议在析构语句中做任何事情,因为该方法调用的时间难以确定

1.4预置实例属性:

说明
__dict__属性以字典的方式输出对象的所有属性,__class__属性可以的到对象类的名字,__doc__属性输出对象的类中的注释,__module__属性输出对象所在模块的名字

示例

class dog:

	def __init__(self,k,c,a):
	    self.kinds = k
	    self.color = c
	    self.age = a
	def say(self):
	    print("汪汪")
d1 = dog("京巴","白色",1)
print(d1.__class__)
print(d1.__dict__)
print(d1.__doc__)
print(d1.__module__)

#输出
<class '__main__.dog'>
{'kinds': '京巴', 'color': '白色', 'age': 1}
None
__main__


二,类

1.1类变量

定义在类中的变量
可以通过以下访问
示例

class human:
    home = "地球"
    def __init__(self,name):
        self.name = name #只能通过实例对象访问
print(human.home) #通过类访问类变量
h1 = human("张三")
print(h1.home) #通过实例对象访问类变量

#执行结果
地球
地球

在实例的对象中修改类变量只会修改实例对象自己类变量
示例

class human:
    home = "地球"
    def __init__(self,name):
        self.name = name #只能通过实例对象访问
h1 = human("张三")
h1.home = "火星"
print(h1.home) #通过实例对象访问类变量
print(human.home) #通过类访问类变量

#执行结果
火星
地球

1.2类方法

类方法 @classmethod
说明:
  类方法是只能访问类变量的方法
  类方法的第一个参数是类的实例,约定为cls
  类和实例对象都可以调用类方法
 类方法不能访问实例变量
示例

class icbc:
    moneys = 1000
    @classmethod
    def total_moneys(cls):
        print("总钱数为",cls.moneys)
icbc.total_moneys()
a = icbc()
a.total_moneys()

#执行结果
总钱数为 1000
总钱数为 1000

1.3静态方法

静态方法@staticmethod
说明
 静态方法是普通函数
 静态方法定义在类的内部,只能凭借该类和实例调用
 静态方法不能访问类变量和实例变量
示例

class a:
    @staticmethod
    def myadd(a,b):
        return a+b
print(a.myadd(10,20))
b = a()
print(b.myadd(10,30))

#执行结果
30
40

1.4类属性的增删改查

说明
getattr(obj, name, [default])  获取对象属性
hasattr(obj, name)      查找这个属性
setattr(obj, name, value)    增加属性
delattr(obj, name)       删除这个属性

示例

class myclass:
    pass
a = myclass()
print(hasattr(a,"name")) #查找name属性
print(setattr(a,"name",100)) #增加name属性
print(hasattr(a,"name")) #查找name属性
print(getattr(a,"name")) #获取name属性的值
delattr(a,"name")       #删除name属性    
print(hasattr(a,"name"))

#执行结果
False
None
True
100
False

你可能感兴趣的:(python学习,python,开发语言,笔记)