一、零碎技巧
1.1 class A 和class A(object)区别
通过python中定义类class A 和class A(object)区别这篇文章可以知道:
object 是指这个类继承的最顶级的对象。
python3.x 中已经可以省略object,两者是等价的;
python2.x 是有功能上的区别的详细参考python的class(类)中的object是什么意思?
二、class类的学习
2.1 简单示例讲解
'''非常简单的类创建尝试尝试'''
class test: # 建立一个类,Class是关键词 “test”是类名
def setage(self, a): # 这就是类的方法,与函数差不多。在类外是函数,在类内就是方法
self.age = a
def getage(self):
return self.age
'''类的对象创建和使用'''
def case1():
print(Person.country)
# print(Person.age) 出错,AttributeError: type object 'Person' has no attribute 'age'
'''
类的实例化,即创建对象
'''
p1 = Person("tom", 12)
p1.country = "test"
Person.country="change:haha"
print(p1.country, p1.age, p1.name)
print('私有化属性',p1.getlanguage())
def case2():
x=1
y=2
'''返回的是一个数组'''
return x,y
2.2 类属性和对象属性
'''
1.类属性和实例的属性的调用关系
'''
'''
类可以调用类属性,如类.属性,但是类无法调用对象的属性(实例属性)
对象即可以调用类属性,也可以调用实例属性
'''
class Person:
country ="china" #类属性
__language = "Chinese" # 私有类属性也不能直接外部调用
'''类的方法在定义时,第一个参数必定是类的对象,这个参数一般默认为self
这个参数也可以别的名字,但是无轮如何,方法的第一个参数必定被认为是类的对象本身
'''
def __init__(self,name,age):
sex ="男" #这不是实例属性,只是变量而已,用对象名.sex调不出来。
'''在init函数中赋值的变量,均是对象的属性,即实例属性'''
self.name = name #实例属性
self.age = age
def getlanguage(self):
return Person.__language
值得注意的是:
类属性只能通过类对象来修改,参考python入门学习之类属性、实例属性、类方法、实例方法
实例对象修改的类属性,仅仅是该实例对象下的类属性,如下所示:
class A:
# 定义类属性
count = 10
# 通过类来访问
print(A.count) # 10
a = A()
# 通过类实例来访问
print(a.count) # 10
# 通过类对象来修改
A.count = 20
print('类对象修改之后的值:', A.count) # 20
print('类实例修改之后的值:', a.count) # 20
# 通过类实例来修改
a.count = 30
print('类对象修改之后的值:', A.count) # 20
print('类实例修改之后的值:', a.count) # 30