标签:响应 构造 私有方法 对象 赋值 python3 count 类型 没有
###四、什么是面向对象
更强了代码的可扩展性
类和类型是一个概念,基础的数据类型也是以类的方式来开发的,例如:通过对象来调用Str类中的__str__()。
type(cls): 输出的结果就是创建这个类的元类,大多数情况下就是type,除非指定的metaclass=ABCMeta
from abc import ABCMeta
class A(metaclass=ABCMeta):
# 指定metaclass
pass
print(type(A))
class B:
pass
# 不指定metaclass
print(type(B))
'''
输出结果:
<class 'abc.ABCMeta'>
<class 'type'>
'''
对象的内存地址中存储着类的内存中存储方法的内存地址的变量名的内存地址(这里涉及到指针的问题)
class Person:
country = 'CHINA'
print(country)
# 与函数不同,类不通过实例化调用,就可以直接在加载的时候直接打印类中的静态变量
# 但是类中的方法需要等到类实例化后由实例化对象来调用,函数也需要通过函数函数名来调用
# print(Person.country)
# 这里不能直接用类名调用country静态变量,因为类并未加载完成,也没有把类空间中的数据赋值给类名
'''
类的加载顺序:
1. 类先按照从上往下一行一行代码加载,遇到可以直接输出静态变量,但是类的方法不能调用
2. 当加载完成后,系统发现是一个类,会给类创建一个类空间(类的命名空间),空间中存储着所有的静态变量和方法信息
3. 此时再把空间赋值给类名,才可以通过类名来调用
'''
def func(self):
print('66666')
def fun1(self):
print('7777777')
p1 = Person()
print(p1.func)
print(Person.func)
'''
结果是:
'''
CHINA
<bound method Person.func of <__main__.Person object at 0x10634afd0>>
<function Person.func at 0x106343f80>
标签:响应 构造 私有方法 对象 赋值 python3 count 类型 没有
原文地址:https://www.cnblogs.com/ddzc/p/12283441.html