类:用来描述一类事物,具有相同的属性和方法
内置类:int、float、str、dict、list、tuple、set
类名()会自动调用类中的__init__方法
通过对象名.__dict__就可以查看这个对象的属性和值
修改字典、列表里的值或者对象的某一个属性,都不会影响对象、字典、列表所在的内存空间
实例化的步骤
python中一切皆对象、对象的类型就是类
class User:
def __init__(self, username, password):
self.username = username
self.password = password
def login(self):
if self.username == "JACK" and self.password == "JACK123":
print("登陆成功")
else:
print("登陆失败")
user = User("JACK","JACK123")
user.login()
print(user.__dict__)
静态变量/属性、方法都存储在类的命名空间里
类指针指向存储了类所在的内存空间
对象中的变量只属于对象本身,每个对象有属于自己的空间来存储对象的变量
class A:
country = "中国"
def __init__(self,name,age,country):
self.name = name
self.age = age
self.country = country
def func1(self):
print(self)
print(A.__dict__)
print(A.func1)
a = A("zevin", "18", "China")
print(a.country)
如果一个变量是所有对象共享的值,那么这个变量应该被定义为静态变量,所有和静态变量相关的增删改查都应该使用类名来处理
#统计类的实例化次数
class Count:
count = 0
def __init__(self):
Count.count += 1
print(Count.count)
a = Count()
b = Count()
组合:一个类的对象是另外一个类的对象的属性
‘‘‘
学生类:姓名、年龄、班级、学号
班级类:班级名字、开班时间、老师
功能:方便代码的修改
‘‘‘
class Student:
def __init__(self, name, age, clas, sno):
self.name = name
self.age = age
self.clas = clas
self.sno = sno
class Clas:
def __init__(self, cname, ctime, cteacher):
self.cname = cname
self.ctime = ctime
self.cteacher = cteacher
py1 = Clas("python1期", "2019-2-2", ‘Pork‘)
py2 = Clas("python2期", "2019-3-3", "David")
alvin = Student("alvin", "18", py1, "19020201")
alisa = Student("alisa", "19", py2, "19030301")
print(alvin.clas, py1)
print(alvin.clas.cteacher)
子类有父类的方法,但是要调用父类的:父类名.方法名(self,参数)
练习
class Foo:
def __init__(self):#在每一个self调用func时,只看self是谁
self.func()
def func(self):
print(‘in foo‘)
class Son(Foo):
def func(self):
print(‘in son‘)
Son()
#in son
原文:https://www.cnblogs.com/gugu-da/p/12723483.html