类的定义
定义类:类名怎么定义?使用class 来定义一个类
class 类名:类名- -般需要遵守大驼峰命名法,每一个单词的首字母都大写
- class <类名>:
- class <类名>(object):
class Student(object): # 关注这个类有哪些特征和行为
#在_ init_ 方法里,以参数的形式定义特征,我们称之为属性
def __init__ (self, name, age, height):
self.name = name
self.age = age
self.height = height
#行为定义为一个个函数
def run(self):
print('正在跑步')
def eat(self):
print('正在吃东西')
#Student 类创立了两个实例对象s1,s2
#Student() ==>会自动调用_ init__方法
s1 = Student('小朋',18,1.75)
s2 = Student('小美丽',17,1.65)
s1.run()
s2.eat()
self解释
class Student(object):
def __init__(self, x, y):
self.name = x
self.age = y
# Student('张三',18) 这段代码具体做了什么呢?
#1.调用__new__ 方法,用来申请内存空间
# 2.调用_ .init_ 方法传入参数,将self 指向创建好的内存空间,填充数据
# 3.变量s1也指向创建好的内存空间
s1 = Student('张三',18)
print('s1的名字是',s1. name)
class Student(object):
def __init__(self, x, y):
self.name = x
self.age = y
def say_hello(self):
print('大家好,我是', self.name)
# Student('张三',18) 这段代码具体做了什么呢?
# 1.调用__new__ 方法,用来申请内存空间
# 2.调用_ .init_ 方法传入参数,将self 指向创建好的内存空间,填充数据
# 3.变量s1也指向创建好的内存空间
s1 = Student('张三', 18)
s1.say_hello()
print('s1的名字是', s1.name)
print('----')
s2 = Student('jack', 21)
s2.say_hello()
所有类实例能共享类属性
class renlei:
#类属性,能被所有实例共享
shengao=1.75
def __init__(self):
print('我是人')
def say(self):
print('能说')
return"漂亮"
zhonguoren=renlei()
print(zhonguoren.say())
print(zhonguoren.shengao)
魔法方法特点
1.不需要手动调用,会在合适的时机自动调用
2.这些方法,都是使用开始,使用 结束 3.方法名都是系统规定好的,在合适的时机自己调用
- 构造方法
1.构造方法:类开始实例化的时候被最先初始化的方法。
2.定义类的构造方法使用: init 魔法关键字。
class Person(object):
#在创建对象时,会自动调用这个方法
def __init__(self, name, age):
print('_ init_ 方 法被调用了')
self.name = name
self.age= age
p = Person(' zhangsan', 18)
- 构造方法模板
class Amiml:
# 构造方法
def __init__(self,lb):
self.lb=lb
def getlb(self):
return self.lb
amiml=Amiml("鸟类")
print(amiml.lb)
继承
class A(object):
def demo_a(self):
print('我是A类里的方法demo_ _a')
class B(object):
def demo_b(self):
print( '我是B类里的方法demo_ _b')
class C(A,B):
pass
c=C ()
c.demo_a()
c.demo_b()
如果子类存在构造方法,I继承关系成立后,最终的结果也如果子类存在构造方法,I继承关系成立后,最终的结果也
class Amiml:
# 构造方法
def __init__(self,lb):
self.lb=lb
def getlb(self):
return self.lb
class Dog(Amiml):
def __init__(self):
print("汪汪")
amiml=Amiml("鸟类")
print(amiml.lb)
dog=Dog()
添加实例属性
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("皮皮", 1)
# 动态添加属性
# 1,以下是添加实例属性的两种方式
p.address = "义乌"
setattr(p, "gender", "男") # 为p对象添加了一个名为gender的属性,存储的值为“男”
print("名字是%s 年龄是%d 地址是%s 性别是%s" % (p.name, p.age, p.address, p.gender))
print("名字是%s 年龄是%d 地址是%s 性别是%s" % (p.name, p.age, p.address, getattr(p, "gender")))
# 2,添加对象属性 类名.属性名
Person.CLS_ID = 110
print(p.CLS_ID)