1. python 怎么判断一个类是否被实例化,能给出代码学习下吗,谢谢!
这个类似于单例模式吧
print '----------------------方法1--------------------------'
#方法1,实现__new__方法
#并在将一个类的实例绑定到类变量_instance上,
#如果cls._instance为None说明该类还没有实例化过,实例化该类,并返回
#如果cls._instance不为None,直接返回cls._instance
class Singleton(object):
def __new__(cls, *args, **kw):
if not hasattr(cls, '_instance'):
orig = super(Singleton, cls)
cls._instance = orig.__new__(cls, *args, **kw)
return cls._instance
class MyClass(Singleton):
a = 1
one = MyClass()
two = MyClass()
two.a = 3
print one.a
#3
#one和two完全相同,可以用id(), ==, is检测
print id(one)
#29097904
print id(two)
#29097904
print one == two
#True
print one is two
#True
2. php实例化
有几个书写错误,现在已经订正!
$arr = $this->GetRecord($SQL);//这不是调用父类中的方法吗?
我跟你说过,什么叫继承,就是说子类拥有父类的所有成员(在可继承的情况下),你可以通过作用域连接符使用父类成员,也可以通过$this关键字(静态的,私有的不行!!!!!)!!!!!!!
怎样来认识面向对象编程:
给你举个例子:
class student{
public $name;
public statics $age;
public function set_name($name){
$this->name=$name;//这是正确的
self::$name=$name;//正确
$name=$name;//这句错误
}
public function set_age($age){
$this->age=$age;//错误
self::$age=$age;//正确
}
}
//为什么会这样呢,也就是说,如果你要在类里面另外的成员,那么你就要通过
//$this关键字,或者作用域解析符,但是如果是静态成员,不能使用$this访问,来引用它,不能像普通的代码一样直接使用.
$this->name你可以这样理解,学生的名字,也就是说$this代表的就是类名
class boy_student extents students{
//这个类扩展自students,也就是说有students类的所有成员,
//当然你也可以添加students没有的成员
$aadress;
:
:
:
//如果你要应用父类的方法:可以这样:
parent::set_name(....)
//当然这里涉及到的东西足足可以写成一本书,不是说有的父类成员都能子类访问,有些甚至连继承都不行,这里涉及到可见性的问题!
}
*********************************
$this->xxx 实例化来调用的吗?
*******************************
这不是实例化,什么叫实例化,就是说,刚才我们定义的是一个抽象的东西,就像学生,他是一个类别;
$zhangshan = new students();
这才是实利化,明白吗!
3. php中为什么静态变量不用实例化
你没学过C语言和C++吗???? 静态变量只能声明一次,在你连接一个类时,所有的静态变量和静态函数都已经定义并启用了,而且不能再动态生成新变量和函数,所有实例化的对象公用一个静态变量和静态函数,静态类也是如此,静态类是不能实例化的,但能直接用。。。。
c++语言里static标记的函数和变量,都不能进行第二次申请内存,只有动态的有auto标记的才可以执行一次语句申请一次内存,即实例化(这个关键字是默认的通常不写,没有就代表是auto),所有语言的静态和动态意思都是一样的,静态变量或函数都有特殊的静态标识符,通常都是static ,PHP也是一样,所有编译器和解释器一但看到这个标志,就不会第二次执行该声明语句,所以也没法实例化,可以直接用,但用的都是同一个。。。
4. PHP 类怎么判断调用方法
给个例子 好好理解下吧 例:<?php
class A
{
function foo()
{
if (isset($this)) {
echo '$this is defined (';
echo get_class($this);
echo ")\n";
} else {
echo "\$this is not defined.\n";
}
}
}
class B
{
function bar()
{
A::foo();
//parent::foo();
}
}
$a = new A();
$a->foo();//动态调用,因为new了对象
A::foo();//静态调用,直接用类名去调用,没有new对象
$b = new B();
$b->bar();//在对象$b中,A::foo();进行静态调用
B::bar();
?>
总结:静态、动态调用都指类、对象对其方法的调用,动态指的是创建(new)了对象,然后用对象变量去调用方法;静态则是没有创建对象,直接用类名去调用。至于另一个对象那就很简单了,不同的类创建不同的对象,比如class A;class B ,$a = new A();$b = new B();$a and $b 相对之间就是另一个对象了。
延伸:伪变量 $this 通常未定义,如果其所在的方法是被静态调用的话。但这不是个严格规定:如果一个方法被从另一个对象内静态调用的话,则 $this 会被定义。此时 $this 的值是那个发出调用的对象。
5. php 有很多文件实例化了这个类 我想在这个类里知道哪个文件实例化了我
关键我还是不太清楚啊 在哪个地方实例化了?是在主文件.php下。还是配置文件里?是不是 一个整体文件 上面是mysql的东西,下面比如说是分页的东西,分页的东西也需要用到数据库,是不是 mysql+list的类才可实现分页的。!而现在就是把mysql单独做一个文件出来,在list页面里面引入过mysql类的东西。我就不明白最后一点,通过一个global全局就怎么引用了。因为这个貌似是一个类引用另一个实例化类也就是对象里面的东西
6. php对象实例化问题
构造函数不能有返回值,你想只实例类,把你返回那个数组赋值给公有变量.外面直接取值.
7. PHP 判断一个对象是哪个类的实例化的函数
echoget_class($obj);
8. php实例化问题149行 new $type、实例化不都是类的实例化么、
$test = new User();
9. php类的实例化问题
只要是实例化一个类,不论是不是在同一个文件夹下,只要不是在当前脚本声明的,都是需要include的. 加入一个对象实例化一个不存在的类,这时候机会调用类的一个魔术方法__autoload方法,参数是你要实例化的这个类名,如果你将这个autoload声明成了一个方法,方法里面定义如何查找你需要的这个类,在哪里查找,并且找到了就自动引入,那就不需要你时时刻刻都来引入类文件了
10. 怎样判断一个对象是否已被实例化
System.out.print(对象);打印对象,看结果是null还是类路径,如果是null表示没有,否则表示已经初始化;或者直接判断它是不是等于null,等于null表示未实例化,否则已实例化
if(TestObject == null ){
System.out.print(对象TestObject未实例化);
}